* backend/api: refactor PlaylistId to PlaylistUid
* Add org_id to Get and Update playlist functions
Fix migration - no longer pad the uid; fix mysql syntax
The relevant tests are passing using postgres, mysql and the default sqllite backends, but there are a number of other failing tests when using postgres and myself so I'm not entirely confident with those results.
* fix bad query in GetPlaylistItem and add a test that would have caught the mistake in the first place. Reverted the playlist_uid column addition in playlist_item; it became unnecessary after this PR.
Added default value to the new UID column based on PR feedback.
* break this PRs migration into its own function
* Playlists: Update UI to use the updated API
Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
(cherry picked from commit a33a023629)
Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
This commit is contained in:
co-authored by
Kristin Laemmert
parent
d78c04c8e6
commit
8ef7fd3859
@@ -91,6 +91,7 @@ func (*OSSMigrations) AddMigration(mg *Migrator) {
|
||||
accesscontrol.AddManagedPermissionsMigration(mg, accesscontrol.ManagedPermissionsMigrationID)
|
||||
accesscontrol.AddManagedFolderAlertActionsMigration(mg)
|
||||
accesscontrol.AddActionNameMigrator(mg)
|
||||
addPlaylistUIDMigration(mg)
|
||||
}
|
||||
|
||||
func addMigrationLogMigrations(mg *Migrator) {
|
||||
|
||||
@@ -6,18 +6,8 @@ func addPlaylistMigrations(mg *Migrator) {
|
||||
mg.AddMigration("Drop old table playlist table", NewDropTableMigration("playlist"))
|
||||
mg.AddMigration("Drop old table playlist_item table", NewDropTableMigration("playlist_item"))
|
||||
|
||||
playlistV2 := Table{
|
||||
Name: "playlist",
|
||||
Columns: []*Column{
|
||||
{Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true},
|
||||
{Name: "name", Type: DB_NVarchar, Length: 255, Nullable: false},
|
||||
{Name: "interval", Type: DB_NVarchar, Length: 255, Nullable: false},
|
||||
{Name: "org_id", Type: DB_BigInt, Nullable: false},
|
||||
},
|
||||
}
|
||||
|
||||
// create table
|
||||
mg.AddMigration("create playlist table v2", NewAddTableMigration(playlistV2))
|
||||
mg.AddMigration("create playlist table v2", NewAddTableMigration(playlistV2()))
|
||||
|
||||
playlistItemV2 := Table{
|
||||
Name: "playlist_item",
|
||||
@@ -44,3 +34,32 @@ func addPlaylistMigrations(mg *Migrator) {
|
||||
{Name: "title", Type: DB_Text, Nullable: false},
|
||||
}))
|
||||
}
|
||||
|
||||
func addPlaylistUIDMigration(mg *Migrator) {
|
||||
// Replacing auto-incremented playlistIDs with string UIDs
|
||||
mg.AddMigration("Add UID column to playlist", NewAddColumnMigration(playlistV2(), &Column{
|
||||
Name: "uid", Type: DB_NVarchar, Length: 80, Nullable: false, Default: "0",
|
||||
}))
|
||||
|
||||
// copy the (string representation of) existing IDs into the new uid column.
|
||||
mg.AddMigration("Update uid column values in playlist", NewRawSQLMigration("").
|
||||
SQLite("UPDATE playlist SET uid=printf('%d',id);").
|
||||
Postgres("UPDATE playlist SET uid=id::text;").
|
||||
Mysql("UPDATE playlist SET uid=id;"))
|
||||
|
||||
mg.AddMigration("Add index for uid in playlist", NewAddIndexMigration(playlistV2(), &Index{
|
||||
Cols: []string{"org_id", "uid"}, Type: UniqueIndex,
|
||||
}))
|
||||
}
|
||||
|
||||
func playlistV2() Table {
|
||||
return Table{
|
||||
Name: "playlist",
|
||||
Columns: []*Column{
|
||||
{Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true},
|
||||
{Name: "name", Type: DB_NVarchar, Length: 255, Nullable: false},
|
||||
{Name: "interval", Type: DB_NVarchar, Length: 255, Nullable: false},
|
||||
{Name: "org_id", Type: DB_BigInt, Nullable: false},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user