package dao import ( "StuAcaWorksAI/proto" "fmt" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/gorm" ) var DB *gorm.DB func Init() error { var db *gorm.DB var err error var dsn string if proto.Config.DB == 0 { dsn = proto.Config.MYSQL_DSN db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) } else if proto.Config.DB == 1 { dsn = proto.Config.PG_DSN db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{}) } if err != nil { panic("failed to connect database") return err } err = db.AutoMigrate(&User{}) if err != nil { fmt.Println("user table:", err) return err } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 err = db.AutoMigrate(&File{}) if err != nil { fmt.Println("file table:", err) } err = db.AutoMigrate(&File{}) if err != nil { fmt.Println("file table:", err) return err } err = db.AutoMigrate(&ConfigFile{}) if err != nil { fmt.Println("config file table:", err) return err } err = db.AutoMigrate(&FileAuth{}) if err != nil { fmt.Println("file auth table:", err) return err } err = db.AutoMigrate(&Model{}) if err != nil { fmt.Println("model table:", err) return err } err = db.AutoMigrate(&Session{}) if err != nil { fmt.Println("session table:", err) return err } err = db.AutoMigrate(&Message{}) if err != nil { fmt.Println("message table:", err) return err } DB = db return err } func Close() { sqlDB, err := DB.DB() if err != nil { panic("failed to connect database") } sqlDB.Close() }