Skip to content

Commit 9bd1aee

Browse files
committed
update sqldef and examples
1 parent 14b10dd commit 9bd1aee

File tree

5 files changed

+119
-44
lines changed

5 files changed

+119
-44
lines changed

app.mjs

Lines changed: 114 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,48 +11,125 @@ const errorDown = document.getElementById("errorDown");
1111

1212
const 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);
107184
inputB.addEventListener("input", runDiff);
108185
enableDrop.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+
}
111193
runDiff();
112194

113195
// Display version info

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.25
44

55
toolchain go1.25.5
66

7-
require github.com/sqldef/sqldef/v3 v3.8.0
7+
require github.com/sqldef/sqldef/v3 v3.8.4
88

99
require (
1010
github.com/goccy/go-yaml v1.19.0 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
1010
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
1111
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1212
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
13-
github.com/sqldef/sqldef/v3 v3.8.0 h1:r9IFIMoxw9Bq99ioxqCmwosOf+73ZNgTKt7/511jjSk=
14-
github.com/sqldef/sqldef/v3 v3.8.0/go.mod h1:yrTNAMDgx+NNL1Iu7X6eOVA3zxJ7vSt3apkdn1RDHAI=
13+
github.com/sqldef/sqldef/v3 v3.8.4 h1:iETP45XJFnlqLDrEv4DY4MoPJ1+dPqgBpUupdIrB2uo=
14+
github.com/sqldef/sqldef/v3 v3.8.4/go.mod h1:yrTNAMDgx+NNL1Iu7X6eOVA3zxJ7vSt3apkdn1RDHAI=
1515
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
1616
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
1717
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=

index.html

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,18 +132,11 @@ <h2>Online Demo</h2>
132132
<div class="schema-row">
133133
<div class="schema-pane">
134134
<h4 class="schema-header">Current schema</h4>
135-
<textarea id="inputA" rows="10">CREATE TABLE users (
136-
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
137-
name VARCHAR(128) DEFAULT 'konsumer'
138-
) Engine=InnoDB DEFAULT CHARSET=utf8mb4;</textarea>
135+
<textarea id="inputA" rows="18"></textarea>
139136
</div>
140137
<div class="schema-pane">
141138
<h4 class="schema-header">Desired schema</h4>
142-
<textarea id="inputB" rows="10">CREATE TABLE users (
143-
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
144-
name VARCHAR(128) DEFAULT 'konsumer',
145-
created_at DATETIME NOT NULL
146-
) Engine=InnoDB DEFAULT CHARSET=utf8mb4;</textarea>
139+
<textarea id="inputB" rows="18"></textarea>
147140
</div>
148141
</div>
149142

sqldef.wasm

9.29 KB
Binary file not shown.

0 commit comments

Comments
 (0)