@@ -11,48 +11,125 @@ const errorDown = document.getElementById("errorDown");
1111
1212const schemaExamples = {
1313 mysql : {
14- current : `CREATE TABLE users (
15- id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
16- name VARCHAR(128) DEFAULT 'konsumer'
14+ current : `CREATE TABLE authors (
15+ id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
16+ name VARCHAR(255) NOT NULL
17+ ) Engine=InnoDB DEFAULT CHARSET=utf8mb4;
18+
19+ CREATE TABLE books (
20+ id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
21+ title VARCHAR(255) NOT NULL,
22+ author_id BIGINT UNSIGNED NOT NULL,
23+ price DECIMAL(10, 2) NOT NULL,
24+ FOREIGN KEY (author_id) REFERENCES authors(id)
1725) Engine=InnoDB DEFAULT CHARSET=utf8mb4;` ,
18- desired : `CREATE TABLE users (
19- id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
20- name VARCHAR(128) DEFAULT 'konsumer',
21- created_at DATETIME NOT NULL
26+ desired : `CREATE TABLE authors (
27+ id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
28+ name VARCHAR(255) NOT NULL
29+ ) Engine=InnoDB DEFAULT CHARSET=utf8mb4;
30+
31+ CREATE TABLE books (
32+ id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
33+ title VARCHAR(255) NOT NULL,
34+ author_id BIGINT UNSIGNED NOT NULL,
35+ price DECIMAL(10, 2) NOT NULL,
36+ stock INT NOT NULL DEFAULT 0,
37+ FOREIGN KEY (author_id) REFERENCES authors(id),
38+ CHECK (price > 0),
39+ CHECK (stock >= 0),
40+ INDEX idx_author (author_id),
41+ INDEX idx_price (price)
2242) Engine=InnoDB DEFAULT CHARSET=utf8mb4;` ,
2343 } ,
2444 postgres : {
25- current : `CREATE TABLE users (
26- id BIGSERIAL PRIMARY KEY,
27- name VARCHAR(128) DEFAULT 'konsumer'
28- );` ,
29- desired : `CREATE TABLE users (
30- id BIGSERIAL PRIMARY KEY,
31- name VARCHAR(128) DEFAULT 'konsumer',
32- created_at TIMESTAMP NOT NULL
45+ current : `CREATE TABLE authors (
46+ id BIGSERIAL PRIMARY KEY,
47+ name VARCHAR(255) NOT NULL
48+ );
49+
50+ CREATE TABLE books (
51+ id BIGSERIAL PRIMARY KEY,
52+ title VARCHAR(255) NOT NULL,
53+ author_id BIGINT NOT NULL REFERENCES authors(id),
54+ price DECIMAL(10, 2) NOT NULL
3355);` ,
56+ desired : `CREATE TABLE authors (
57+ id BIGSERIAL PRIMARY KEY,
58+ name VARCHAR(255) NOT NULL
59+ );
60+
61+ CREATE TABLE books (
62+ id BIGSERIAL PRIMARY KEY,
63+ title VARCHAR(255) NOT NULL,
64+ author_id BIGINT NOT NULL REFERENCES authors(id),
65+ price DECIMAL(10, 2) NOT NULL,
66+ stock INT NOT NULL DEFAULT 0,
67+ CONSTRAINT chk_price CHECK (price > 0),
68+ CONSTRAINT chk_stock CHECK (stock >= 0)
69+ );
70+
71+ CREATE INDEX idx_books_author ON books(author_id);
72+ CREATE INDEX idx_books_price ON books(price);` ,
3473 } ,
3574 sqlite3 : {
36- current : `CREATE TABLE users (
37- id INTEGER PRIMARY KEY AUTOINCREMENT,
38- name TEXT DEFAULT 'konsumer'
39- );` ,
40- desired : `CREATE TABLE users (
41- id INTEGER PRIMARY KEY AUTOINCREMENT,
42- name TEXT DEFAULT 'konsumer',
43- created_at TEXT NOT NULL
75+ current : `CREATE TABLE authors (
76+ id INTEGER PRIMARY KEY AUTOINCREMENT,
77+ name TEXT NOT NULL
78+ );
79+
80+ CREATE TABLE books (
81+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82+ title TEXT NOT NULL,
83+ author_id INTEGER NOT NULL REFERENCES authors(id),
84+ price REAL NOT NULL
4485);` ,
86+ desired : `CREATE TABLE authors (
87+ id INTEGER PRIMARY KEY AUTOINCREMENT,
88+ name TEXT NOT NULL
89+ );
90+
91+ CREATE TABLE books (
92+ id INTEGER PRIMARY KEY AUTOINCREMENT,
93+ title TEXT NOT NULL,
94+ author_id INTEGER NOT NULL REFERENCES authors(id),
95+ price REAL NOT NULL,
96+ stock INTEGER NOT NULL DEFAULT 0,
97+ CHECK (price > 0),
98+ CHECK (stock >= 0)
99+ );
100+
101+ CREATE INDEX idx_books_author ON books(author_id);
102+ CREATE INDEX idx_books_price ON books(price);` ,
45103 } ,
46104 mssql : {
47- current : `CREATE TABLE users (
48- id BIGINT IDENTITY(1,1) PRIMARY KEY,
49- name NVARCHAR(128) DEFAULT 'konsumer'
50- );` ,
51- desired : `CREATE TABLE users (
52- id BIGINT IDENTITY(1,1) PRIMARY KEY,
53- name NVARCHAR(128) DEFAULT 'konsumer',
54- created_at DATETIME NOT NULL
105+ current : `CREATE TABLE authors (
106+ id BIGINT IDENTITY(1,1) PRIMARY KEY,
107+ name NVARCHAR(255) NOT NULL
108+ );
109+
110+ CREATE TABLE books (
111+ id BIGINT IDENTITY(1,1) PRIMARY KEY,
112+ title NVARCHAR(255) NOT NULL,
113+ author_id BIGINT NOT NULL FOREIGN KEY REFERENCES authors(id),
114+ price DECIMAL(10, 2) NOT NULL
55115);` ,
116+ desired : `CREATE TABLE authors (
117+ id BIGINT IDENTITY(1,1) PRIMARY KEY,
118+ name NVARCHAR(255) NOT NULL
119+ );
120+
121+ CREATE TABLE books (
122+ id BIGINT IDENTITY(1,1) PRIMARY KEY,
123+ title NVARCHAR(255) NOT NULL,
124+ author_id BIGINT NOT NULL FOREIGN KEY REFERENCES authors(id),
125+ price DECIMAL(10, 2) NOT NULL,
126+ stock INT NOT NULL DEFAULT 0,
127+ CONSTRAINT chk_price CHECK (price > 0),
128+ CONSTRAINT chk_stock CHECK (stock >= 0)
129+ );
130+
131+ CREATE INDEX idx_books_author ON books(author_id);
132+ CREATE INDEX idx_books_price ON books(price);` ,
56133 } ,
57134} ;
58135
@@ -107,7 +184,12 @@ inputA.addEventListener("input", runDiff);
107184inputB . addEventListener ( "input" , runDiff ) ;
108185enableDrop . addEventListener ( "change" , runDiff ) ;
109186
110- // Run diff on initial load
187+ // Populate textareas and run diff on initial load
188+ const initialExamples = schemaExamples [ dbType . value ] ;
189+ if ( initialExamples ) {
190+ inputA . value = initialExamples . current ;
191+ inputB . value = initialExamples . desired ;
192+ }
111193runDiff ( ) ;
112194
113195// Display version info
0 commit comments