initial commit

This commit is contained in:
nmarrs
2025-11-19 17:49:48 -08:00
parent a4e1db66d3
commit 2171b33477
10 changed files with 579 additions and 24 deletions
@@ -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);"))
}