mirror of
https://github.com/muety/wakapi.git
synced 2023-08-10 21:12:56 +03:00
89 lines
2.7 KiB
Go
89 lines
2.7 KiB
Go
package migrations
|
|
|
|
import (
|
|
"github.com/muety/wakapi/config"
|
|
"github.com/muety/wakapi/models"
|
|
"gorm.io/gorm"
|
|
"strings"
|
|
)
|
|
|
|
// fix for https://github.com/muety/wakapi/issues/416
|
|
|
|
func init() {
|
|
const name = "20221002-fix_summary_id_types"
|
|
|
|
f := migrationFunc{
|
|
name: name,
|
|
f: func(db *gorm.DB, cfg *config.Config) error {
|
|
if cfg.Db.Dialect != config.SQLDialectMysql {
|
|
return nil
|
|
}
|
|
|
|
if !db.Migrator().HasTable(&models.Summary{}) || !db.Migrator().HasTable(&models.SummaryItem{}) {
|
|
return nil
|
|
}
|
|
|
|
var currentType string
|
|
if err := db.
|
|
Table("information_schema.columns").
|
|
Select("data_type").
|
|
Where("table_name = ?", "summary_items").
|
|
Where("column_name = ?", "summary_id").
|
|
Limit(1).
|
|
Row().Scan(¤tType); err != nil {
|
|
return err
|
|
}
|
|
|
|
if strings.ToLower(currentType) != "int" {
|
|
if db.Migrator().HasConstraint(&models.SummaryItem{}, "fk_summaries_editors") {
|
|
if err := db.Migrator().DropConstraint(&models.SummaryItem{}, "fk_summaries_editors"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if db.Migrator().HasConstraint(&models.SummaryItem{}, "fk_summaries_languages") {
|
|
if err := db.Migrator().DropConstraint(&models.SummaryItem{}, "fk_summaries_languages"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if db.Migrator().HasConstraint(&models.SummaryItem{}, "fk_summaries_machines") {
|
|
if err := db.Migrator().DropConstraint(&models.SummaryItem{}, "fk_summaries_machines"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if db.Migrator().HasConstraint(&models.SummaryItem{}, "fk_summaries_operating_systems") {
|
|
if err := db.Migrator().DropConstraint(&models.SummaryItem{}, "fk_summaries_operating_systems"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if db.Migrator().HasConstraint(&models.SummaryItem{}, "fk_summaries_projects") {
|
|
if err := db.Migrator().DropConstraint(&models.SummaryItem{}, "fk_summaries_projects"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
// https://github.com/muety/wakapi/issues/416#issuecomment-1271674792
|
|
if db.Migrator().HasConstraint(&models.SummaryItem{}, "fk_summary_items_summary") {
|
|
if err := db.Migrator().DropConstraint(&models.SummaryItem{}, "fk_summary_items_summary"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
if db.Migrator().HasConstraint(&models.SummaryItem{}, "fk_summaries_labels") {
|
|
if err := db.Migrator().DropConstraint(&models.SummaryItem{}, "fk_summaries_labels"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if err := db.Migrator().AlterColumn(&models.Summary{}, "id"); err != nil {
|
|
return err
|
|
}
|
|
if err := db.Migrator().AlterColumn(&models.SummaryItem{}, "summary_id"); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
},
|
|
}
|
|
|
|
registerPreMigration(f)
|
|
}
|