package bootstrap import ( "memora-api/internal/config" "memora-api/internal/model" "gorm.io/driver/mysql" "gorm.io/gorm" ) func InitDB(cfg *config.Config) (*gorm.DB, error) { return gorm.Open(mysql.Open(cfg.Database.DSN()), &gorm.Config{}) } func AutoMigrate(db *gorm.DB) error { if err := db.AutoMigrate( &model.User{}, &model.WordBook{}, &model.Word{}, &model.WordSentence{}, &model.WordTranslation{}, &model.WordSynonym{}, &model.WordSynonymItem{}, &model.WordPhrase{}, &model.WordRel{}, &model.WordRelItem{}, &model.MemoryRecord{}, ); err != nil { return err } return seedWordBooks(db) } func seedWordBooks(db *gorm.DB) error { books := []model.WordBook{ {ID: model.DefaultWordBookID, Code: "default", Name: "默认词库", SourceBookID: "DEFAULT"}, {ID: "00000000000000000000000000000002", Code: "cet4", Name: "四级词库", SourceBookID: "CET4"}, {ID: "00000000000000000000000000000003", Code: "ielts", Name: "雅思词库", SourceBookID: "IELTS"}, {ID: "00000000000000000000000000000004", Code: "toefl", Name: "托福词库", SourceBookID: "TOEFL"}, } for i := range books { book := books[i] if err := db.Where("code = ?", book.Code).FirstOrCreate(&book).Error; err != nil { return err } } return nil }