datasource_mig.go 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package migrations
  2. import . "github.com/grafana/grafana/pkg/services/sqlstore/migrator"
  3. func addDataSourceMigration(mg *Migrator) {
  4. mg.AddMigration("create data_source table", new(AddTableMigration).
  5. Name("data_source").WithColumns(
  6. &Column{Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true},
  7. &Column{Name: "account_id", Type: DB_BigInt, Nullable: false},
  8. &Column{Name: "version", Type: DB_Int, Nullable: false},
  9. &Column{Name: "type", Type: DB_NVarchar, Length: 255, Nullable: false},
  10. &Column{Name: "name", Type: DB_NVarchar, Length: 255, Nullable: false},
  11. &Column{Name: "access", Type: DB_NVarchar, Length: 255, Nullable: false},
  12. &Column{Name: "url", Type: DB_NVarchar, Length: 255, Nullable: false},
  13. &Column{Name: "password", Type: DB_NVarchar, Length: 255, Nullable: true},
  14. &Column{Name: "user", Type: DB_NVarchar, Length: 255, Nullable: true},
  15. &Column{Name: "database", Type: DB_NVarchar, Length: 255, Nullable: true},
  16. &Column{Name: "basic_auth", Type: DB_Bool, Nullable: false},
  17. &Column{Name: "basic_auth_user", Type: DB_NVarchar, Length: 255, Nullable: true},
  18. &Column{Name: "basic_auth_password", Type: DB_NVarchar, Length: 255, Nullable: true},
  19. &Column{Name: "is_default", Type: DB_Bool, Nullable: false},
  20. &Column{Name: "created", Type: DB_DateTime, Nullable: false},
  21. &Column{Name: "updated", Type: DB_DateTime, Nullable: false},
  22. ))
  23. //------- indexes ------------------
  24. mg.AddMigration("add index data_source.account_id", new(AddIndexMigration).
  25. Table("data_source").Columns("account_id"))
  26. mg.AddMigration("add unique index data_source.account_id_name", new(AddIndexMigration).
  27. Table("data_source").Columns("account_id", "name").Unique())
  28. // ---------------------
  29. // account -> org changes
  30. //------- drop indexes ------------------
  31. mg.AddMigration("drop index data_source.account_id", new(DropIndexMigration).
  32. Table("data_source").Columns("account_id"))
  33. mg.AddMigration("drop unique index data_source.account_id_name", new(DropIndexMigration).
  34. Table("data_source").Columns("account_id", "name").Unique())
  35. //------- rename table ------------------
  36. mg.AddMigration("rename table data_source to data_source_old", new(RenameTableMigration).
  37. Rename("data_source", "data_source_old"))
  38. //------- recreate table with new column names ------------------
  39. mg.AddMigration("create data_source table v2", new(AddTableMigration).
  40. Name("data_source").WithColumns(
  41. &Column{Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true},
  42. &Column{Name: "org_id", Type: DB_BigInt, Nullable: false},
  43. &Column{Name: "version", Type: DB_Int, Nullable: false},
  44. &Column{Name: "type", Type: DB_NVarchar, Length: 255, Nullable: false},
  45. &Column{Name: "name", Type: DB_NVarchar, Length: 255, Nullable: false},
  46. &Column{Name: "access", Type: DB_NVarchar, Length: 255, Nullable: false},
  47. &Column{Name: "url", Type: DB_NVarchar, Length: 255, Nullable: false},
  48. &Column{Name: "password", Type: DB_NVarchar, Length: 255, Nullable: true},
  49. &Column{Name: "user", Type: DB_NVarchar, Length: 255, Nullable: true},
  50. &Column{Name: "database", Type: DB_NVarchar, Length: 255, Nullable: true},
  51. &Column{Name: "basic_auth", Type: DB_Bool, Nullable: false},
  52. &Column{Name: "basic_auth_user", Type: DB_NVarchar, Length: 255, Nullable: true},
  53. &Column{Name: "basic_auth_password", Type: DB_NVarchar, Length: 255, Nullable: true},
  54. &Column{Name: "is_default", Type: DB_Bool, Nullable: false},
  55. &Column{Name: "json_data", Type: DB_Text, Nullable: true},
  56. &Column{Name: "created", Type: DB_DateTime, Nullable: false},
  57. &Column{Name: "updated", Type: DB_DateTime, Nullable: false},
  58. ))
  59. //------- data_source table indexes ------------------
  60. mg.AddMigration("add index data_source.org_id", new(AddIndexMigration).
  61. Table("data_source").Columns("org_id"))
  62. mg.AddMigration("add unique index data_source.org_id_name", new(AddIndexMigration).
  63. Table("data_source").Columns("org_id", "name").Unique())
  64. //------- copy data from table -------------------
  65. mg.AddMigration("copy data from data_source_old table", new(CopyTableDataMigration).
  66. Source("data_source_old", "id, account_id, version, type, name, access, url, password, user, database, basic_auth, basic_auth_user, basic_auth_password, is_default, created, updated").
  67. Target("data_source", "id, org_id, version, type, name, access, url, password, user, database, basic_auth, basic_auth_user, basic_auth_password, is_default, created, updated"))
  68. mg.AddMigration("Drop old table data_source_old", new(DropTableMigration).Table("data_source_old"))
  69. }