You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

custom_migrations.go 2.6 kB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package models
  2. import (
  3. "fmt"
  4. "code.gitea.io/gitea/modules/log"
  5. "xorm.io/xorm"
  6. )
  7. type CustomMigration struct {
  8. Description string
  9. Migrate func(*xorm.Engine) error
  10. }
  11. type CustomMigrationStatic struct {
  12. Description string
  13. Migrate func(*xorm.Engine, *xorm.Engine) error
  14. }
  15. var customMigrations = []CustomMigration{
  16. {"Custom v1 Topic struct change to support chinese", syncTopicStruct},
  17. {"Dataset upgrade", upgradeDataset},
  18. }
  19. var customMigrationsStatic = []CustomMigrationStatic{
  20. {"Delete organization user history data ", deleteNotDisplayUser},
  21. {"update issue_fixed_rate to 1 if num_issues is 0 ", updateIssueFixedRate},
  22. }
  23. func MigrateCustom(x *xorm.Engine) {
  24. for _, m := range customMigrations {
  25. log.Info("Migration: %s", m.Description)
  26. if err := m.Migrate(x); err != nil {
  27. log.Error("Migration: %v", err)
  28. }
  29. }
  30. }
  31. func MigrateCustomStatic(x *xorm.Engine, static *xorm.Engine) {
  32. for _, m := range customMigrationsStatic {
  33. log.Info("Migration: %s", m.Description)
  34. if err := m.Migrate(x, static); err != nil {
  35. log.Error("Migration: %v", err)
  36. }
  37. }
  38. }
  39. func upgradeDataset(x *xorm.Engine) error {
  40. query := "update dataset set status=2 where status!=2 and id not in (select distinct a.id from dataset a,attachment b where a.id=b.dataset_id )"
  41. _, err := x.Exec(query)
  42. if err != nil {
  43. return err
  44. }
  45. datasetRepo := new(DatasetRepoInfo)
  46. total, err := x.Count(datasetRepo)
  47. if err == nil && total == 0 {
  48. query := "INSERT INTO dataset_repo_info ( data_set_id, repo_id, user_id, created_unix, updated_unix) SELECT id, repo_id, user_id, created_unix,updated_unix FROM dataset WHERE status != 2"
  49. _, err := x.Exec(query)
  50. return err
  51. } else {
  52. return err
  53. }
  54. }
  55. func syncTopicStruct(x *xorm.Engine) error {
  56. query := "ALTER TABLE topic ALTER COLUMN name TYPE varchar(105);"
  57. _, err := x.Exec(query)
  58. return err
  59. }
  60. func deleteNotDisplayUser(x *xorm.Engine, static *xorm.Engine) error {
  61. querySQL := "select id,name from public.user where type=1"
  62. rows, err := x.Query(querySQL)
  63. if err != nil {
  64. log.Info("select db failed,err:", err)
  65. return err
  66. }
  67. for i, userRow := range rows {
  68. log.Info("delete zuzi user, i=" + fmt.Sprint(i) + " userName=" + string(userRow["name"]))
  69. deleteSql := "delete from user_business_analysis where id=" + string(userRow["id"]) + " and name='" + string(userRow["name"]) + "'"
  70. static.Exec(deleteSql)
  71. }
  72. return nil
  73. }
  74. func updateIssueFixedRate(x *xorm.Engine, static *xorm.Engine) error {
  75. updateSQL := "update repo_statistic set issue_fixed_rate=1.0 where num_issues=0"
  76. _, err := static.Exec(updateSQL)
  77. return err
  78. }