@@ -22,29 +22,30 @@ package sample
2222
2323// User is a user model struct.
2424//
25- // pgddl: table: "users"
26- // pgddl: index: "index_users_username" ON "users" ("username")
25+ // pgddl: table: "users"
26+ // pgddl: constraint: UNIQUE ("username")
27+ // pgddl: index: "index_users_username" ON "users" ("username")
2728type User struct {
28- UserID int64 `db:"user_id" pgddl:"TEXT NOT NULL" pk:"true"`
29- Username string `db:"username" pgddl:"TEXT NOT NULL"`
30- Age int64 `db:"age" pgddl:"INTEGER NOT NULL"`
29+ UserID string `db:"user_id" pgddl:"TEXT NOT NULL" pk:"true"`
30+ Username string `db:"username" pgddl:"TEXT NOT NULL"`
31+ Age int `db:"age" pgddl:"INT NOT NULL"`
3132}
3233
3334// Group is a group model struct.
3435//
3536// pgddl: table: CREATE TABLE IF NOT EXISTS "groups"
3637// pgddl: index: CREATE UNIQUE INDEX "index_groups_group_name" ON "groups" ("group_name")
3738type Group struct {
38- GroupID int64 `db:"group_id" pgddl:"TEXT NOT NULL" pk:"true"`
39+ GroupID string `db:"group_id" pgddl:"TEXT NOT NULL" pk:"true"`
3940 GroupName string `db:"group_name" pgddl:"TEXT NOT NULL"`
4041 Description string `db:"description" pgddl:"TEXT NOT NULL"`
4142}
4243EOF
4344
4445$ # == 2. generate DDL ================================
4546$ ddlgen --dialect postgres --column-tag-go db --ddl-tag-go pgddl --pk-tag-go pk --src /tmp/sample.go --dst /tmp/sample.sql
46- INFO: 2023/11/07 20:49 :39 ddlgen.go:44: source: /tmp/sample.go
47- INFO: 2023/11/07 20:49 :39 ddlgen.go:73: destination: /tmp/sample.sql
47+ INFO: 2023/11/16 16:10 :39 ddlgen.go:44: source: /tmp/sample.go
48+ INFO: 2023/11/16 16:10 :39 ddlgen.go:73: destination: /tmp/sample.sql
4849
4950$ # == 3. Check generated DDL ================================
5051$ cat /tmp/sample.sql
@@ -54,19 +55,21 @@ $ cat /tmp/sample.sql
5455-- source: tmp/sample.go:5
5556-- User is a user model struct.
5657--
57- -- pgddl: table: "users"
58+ -- pgddl: table: "users"
59+ -- pgddl: constraint: UNIQUE ("username")
5860CREATE TABLE "users" (
59- "user_id" TEXT NOT NULL,
60- "username" TEXT NOT NULL,
61- "age" INTEGER NOT NULL,
62- PRIMARY KEY ("user_id")
61+ "user_id" TEXT NOT NULL,
62+ "username" TEXT NOT NULL,
63+ "age" INT NOT NULL,
64+ PRIMARY KEY ("user_id"),
65+ UNIQUE ("username")
6366);
6467
65- -- source: tmp/sample.go:6
66- -- pgddl: index: "index_users_username" ON "users" ("username")
68+ -- source: tmp/sample.go:7
69+ -- pgddl: index: "index_users_username" ON "users" ("username")
6770CREATE INDEX "index_users_username" ON "users" ("username");
6871
69- -- source: tmp/sample.go:15
72+ -- source: tmp/sample.go:16
7073-- Group is a group model struct.
7174--
7275-- pgddl: table: CREATE TABLE IF NOT EXISTS "groups"
@@ -77,7 +80,7 @@ CREATE TABLE IF NOT EXISTS "groups" (
7780 PRIMARY KEY ("group_id")
7881);
7982
80- -- source: tmp/sample.go:16
83+ -- source: tmp/sample.go:17
8184-- pgddl: index: CREATE UNIQUE INDEX "index_groups_group_name" ON "groups" ("group_name")
8285CREATE UNIQUE INDEX "index_groups_group_name" ON "groups" ("group_name");
8386
0 commit comments