2024-05-18 17:12:24 +08:00
|
|
|
package dao
|
|
|
|
|
|
|
|
|
|
import (
|
2024-06-09 11:22:58 +08:00
|
|
|
"fmt"
|
2024-05-18 17:12:24 +08:00
|
|
|
"gorm.io/driver/mysql"
|
2024-09-22 13:59:33 +08:00
|
|
|
"gorm.io/driver/postgres"
|
2025-09-08 20:10:42 +08:00
|
|
|
"gorm.io/driver/sqlite"
|
2024-05-18 17:12:24 +08:00
|
|
|
"gorm.io/gorm"
|
2025-08-19 22:43:31 +08:00
|
|
|
"log"
|
2025-09-09 20:45:04 +08:00
|
|
|
"sync"
|
2024-06-25 09:38:21 +08:00
|
|
|
"videoplayer/proto"
|
2024-05-18 17:12:24 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var DB *gorm.DB
|
|
|
|
|
|
2025-09-09 20:45:04 +08:00
|
|
|
var DBMMap map[uint]*proto.DBValue
|
|
|
|
|
var DBMMapRWMutex = &sync.RWMutex{} //dbm日志
|
|
|
|
|
|
2024-08-02 10:30:41 +08:00
|
|
|
func Init() error {
|
2024-09-22 13:59:33 +08:00
|
|
|
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{})
|
2025-09-08 20:10:42 +08:00
|
|
|
} else if proto.Config.DB == 2 { //sqlite
|
|
|
|
|
dsn = proto.Config.SQLITE_FILE
|
|
|
|
|
db, err = gorm.Open(sqlite.Open(dsn), &gorm.Config{})
|
2024-09-22 13:59:33 +08:00
|
|
|
}
|
2024-05-18 17:12:24 +08:00
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic("failed to connect database")
|
2024-08-04 21:01:06 +08:00
|
|
|
return err
|
2024-05-18 17:12:24 +08:00
|
|
|
}
|
2024-06-09 11:22:58 +08:00
|
|
|
err = db.AutoMigrate(&User{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("user table:", err)
|
2024-08-02 10:30:41 +08:00
|
|
|
return err
|
2024-06-09 11:22:58 +08:00
|
|
|
} // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表
|
2024-06-09 14:22:54 +08:00
|
|
|
err = db.AutoMigrate(&Video{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("video table:", err)
|
2024-08-02 10:30:41 +08:00
|
|
|
return err
|
2024-06-09 14:22:54 +08:00
|
|
|
} // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表
|
|
|
|
|
err = db.AutoMigrate(&Device{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("device table:", err)
|
2024-08-02 10:30:41 +08:00
|
|
|
return err
|
2024-06-09 14:22:54 +08:00
|
|
|
} // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表
|
2024-06-10 12:23:34 +08:00
|
|
|
err = db.AutoMigrate(&Logger{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("logger table:", err)
|
2024-08-02 10:30:41 +08:00
|
|
|
return err
|
2024-06-10 12:23:34 +08:00
|
|
|
} // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表
|
2024-07-05 16:55:57 +08:00
|
|
|
err = db.AutoMigrate(&CID{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("cid table:", err)
|
|
|
|
|
} // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表
|
|
|
|
|
err = db.AutoMigrate(&CIDRunLog{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("cidrunlog table:", err)
|
|
|
|
|
} // 自动迁移,创建表,如果表已经存在,会自动更新表结构,不会删除表,只会创建不存在的表
|
2024-08-02 09:47:33 +08:00
|
|
|
|
|
|
|
|
err = db.AutoMigrate(&Message{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("message table:", err)
|
2024-08-02 10:30:41 +08:00
|
|
|
}
|
|
|
|
|
|
2024-08-30 11:51:31 +08:00
|
|
|
err = db.AutoMigrate(&File{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("file table:", err)
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-02 10:30:41 +08:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-27 19:33:59 +08:00
|
|
|
err = db.AutoMigrate(&File{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("file table:", err)
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-03 15:28:36 +08:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-02 10:30:41 +08:00
|
|
|
err = db.AutoMigrate(&Friend{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("friend table:", err)
|
|
|
|
|
}
|
|
|
|
|
|
2025-02-22 14:44:26 +08:00
|
|
|
err = db.AutoMigrate(&Shell{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("shell table:", err)
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-19 22:43:31 +08:00
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-18 17:12:24 +08:00
|
|
|
DB = db
|
2024-08-02 10:30:41 +08:00
|
|
|
return err
|
2024-05-18 17:12:24 +08:00
|
|
|
}
|
2024-05-18 18:16:34 +08:00
|
|
|
|
|
|
|
|
func Close() {
|
|
|
|
|
sqlDB, err := DB.DB()
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic("failed to connect database")
|
|
|
|
|
}
|
|
|
|
|
sqlDB.Close()
|
|
|
|
|
}
|