initial commit
This commit is contained in:
@@ -28,4 +28,21 @@ func addShortURLMigrations(mg *Migrator) {
|
||||
mg.AddMigration("alter table short_url alter column created_by type to bigint", NewRawSQLMigration("").
|
||||
Mysql("ALTER TABLE short_url MODIFY created_by BIGINT;").
|
||||
Postgres("ALTER TABLE short_url ALTER COLUMN created_by TYPE BIGINT;"))
|
||||
|
||||
// Add signature column for de-duplication
|
||||
shortURLTable := Table{Name: "short_url"}
|
||||
mg.AddMigration("add signature column to short_url table", NewAddColumnMigration(shortURLTable, &Column{
|
||||
Name: "signature",
|
||||
Type: DB_Varchar,
|
||||
Length: 64,
|
||||
Nullable: true,
|
||||
}))
|
||||
|
||||
// Add unique index on (org_id, signature) with NULL handling
|
||||
// PostgreSQL needs a partial unique index to handle NULLs correctly
|
||||
// MySQL/SQLite allow multiple NULLs in unique indexes, which is fine
|
||||
mg.AddMigration("add unique index short_url.org_id-signature", NewRawSQLMigration("").
|
||||
Postgres("CREATE UNIQUE INDEX IF NOT EXISTS UQE_short_url_org_id_signature ON short_url(org_id, signature) WHERE signature IS NOT NULL;").
|
||||
Mysql("CREATE UNIQUE INDEX UQE_short_url_org_id_signature ON short_url(org_id, signature);").
|
||||
SQLite("CREATE UNIQUE INDEX IF NOT EXISTS UQE_short_url_org_id_signature ON short_url(org_id, signature);"))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user