package dao import ( "fmt" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/gorm" "log" "videoplayer/proto" ) 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(&Video{}) if err != nil { fmt.Println("video table:", err) return err } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 err = db.AutoMigrate(&Device{}) if err != nil { fmt.Println("device table:", err) return err } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 err = db.AutoMigrate(&Logger{}) if err != nil { fmt.Println("logger table:", err) return err } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 err = db.AutoMigrate(&CID{}) if err != nil { fmt.Println("cid table:", err) } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 err = db.AutoMigrate(&CIDRunLog{}) if err != nil { fmt.Println("cidrunlog table:", err) } // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表 err = db.AutoMigrate(&Message{}) if err != nil { fmt.Println("message table:", err) } err = db.AutoMigrate(&File{}) if err != nil { fmt.Println("file table:", err) } err = db.AutoMigrate(&Group{}) if err != nil { fmt.Println("usergroup table:", err) } err = db.AutoMigrate(&GroupUser{}) if err != nil { fmt.Println("groupuser table:", err) return 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(&Friend{}) if err != nil { fmt.Println("friend table:", err) } err = db.AutoMigrate(&Shell{}) if err != nil { fmt.Println("shell table:", err) } err = db.AutoMigrate(&proto.DBManage{}) if err != nil { log.Println("dbmanage table:", err) } err = db.AutoMigrate(&proto.SQLRunHistory{}) if err != nil { log.Println("sqlrunhistory table:", err) } DB = db return err } func Close() { sqlDB, err := DB.DB() if err != nil { panic("failed to connect database") } sqlDB.Close() }