2015-12-22 04:07:15 -06:00
|
|
|
package migrations
|
|
|
|
|
|
|
|
import . "github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
|
|
|
|
|
|
|
func addPlaylistMigrations(mg *Migrator) {
|
2016-01-18 09:00:11 -06:00
|
|
|
mg.AddMigration("Drop old table playlist table", NewDropTableMigration("playlist"))
|
|
|
|
mg.AddMigration("Drop old table playlist_item table", NewDropTableMigration("playlist_item"))
|
|
|
|
|
2015-12-22 04:07:15 -06:00
|
|
|
// create table
|
2022-06-14 14:32:52 -05:00
|
|
|
mg.AddMigration("create playlist table v2", NewAddTableMigration(playlistV2()))
|
2016-01-08 10:32:55 -06:00
|
|
|
|
2016-01-18 09:00:11 -06:00
|
|
|
playlistItemV2 := Table{
|
2016-01-08 10:32:55 -06:00
|
|
|
Name: "playlist_item",
|
|
|
|
Columns: []*Column{
|
|
|
|
{Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true},
|
|
|
|
{Name: "playlist_id", Type: DB_BigInt, Nullable: false},
|
|
|
|
{Name: "type", Type: DB_NVarchar, Length: 255, Nullable: false},
|
|
|
|
{Name: "value", Type: DB_Text, Nullable: false},
|
|
|
|
{Name: "title", Type: DB_Text, Nullable: false},
|
|
|
|
{Name: "order", Type: DB_Int, Nullable: false},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2016-01-18 09:00:11 -06:00
|
|
|
mg.AddMigration("create playlist item table v2", NewAddTableMigration(playlistItemV2))
|
2017-03-28 07:34:53 -05:00
|
|
|
|
|
|
|
mg.AddMigration("Update playlist table charset", NewTableCharsetMigration("playlist", []*Column{
|
|
|
|
{Name: "name", Type: DB_NVarchar, Length: 255, Nullable: false},
|
|
|
|
{Name: "interval", Type: DB_NVarchar, Length: 255, Nullable: false},
|
|
|
|
}))
|
|
|
|
|
|
|
|
mg.AddMigration("Update playlist_item table charset", NewTableCharsetMigration("playlist_item", []*Column{
|
|
|
|
{Name: "type", Type: DB_NVarchar, Length: 255, Nullable: false},
|
|
|
|
{Name: "value", Type: DB_Text, Nullable: false},
|
|
|
|
{Name: "title", Type: DB_Text, Nullable: false},
|
|
|
|
}))
|
2015-12-22 04:07:15 -06:00
|
|
|
}
|
2022-06-14 14:32:52 -05:00
|
|
|
|
|
|
|
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},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|