From 4f47022f7f081de42a6e899ca5eb56eeb876fbed Mon Sep 17 00:00:00 2001 From: Deluan Date: Thu, 5 Mar 2026 07:42:23 -0500 Subject: [PATCH] feat: add plugin_id and plugin_playlist_id columns to playlist table --- ...260305051806_add_plugin_playlist_fields.go | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 db/migrations/20260305051806_add_plugin_playlist_fields.go diff --git a/db/migrations/20260305051806_add_plugin_playlist_fields.go b/db/migrations/20260305051806_add_plugin_playlist_fields.go new file mode 100644 index 000000000..518bab0ea --- /dev/null +++ b/db/migrations/20260305051806_add_plugin_playlist_fields.go @@ -0,0 +1,38 @@ +package migrations + +import ( + "context" + "database/sql" + + "github.com/pressly/goose/v3" +) + +func init() { + goose.AddMigrationContext(upAddPluginPlaylistFields, downAddPluginPlaylistFields) +} + +func upAddPluginPlaylistFields(ctx context.Context, tx *sql.Tx) error { + _, err := tx.ExecContext(ctx, `ALTER TABLE playlist ADD COLUMN plugin_id VARCHAR(255) DEFAULT '';`) + if err != nil { + return err + } + _, err = tx.ExecContext(ctx, `ALTER TABLE playlist ADD COLUMN plugin_playlist_id VARCHAR(255) DEFAULT '';`) + if err != nil { + return err + } + _, err = tx.ExecContext(ctx, `CREATE UNIQUE INDEX IF NOT EXISTS idx_playlist_plugin ON playlist(plugin_id, plugin_playlist_id) WHERE plugin_id != '';`) + return err +} + +func downAddPluginPlaylistFields(ctx context.Context, tx *sql.Tx) error { + _, err := tx.ExecContext(ctx, `DROP INDEX IF EXISTS idx_playlist_plugin;`) + if err != nil { + return err + } + _, err = tx.ExecContext(ctx, `ALTER TABLE playlist DROP COLUMN plugin_playlist_id;`) + if err != nil { + return err + } + _, err = tx.ExecContext(ctx, `ALTER TABLE playlist DROP COLUMN plugin_id;`) + return err +}