From b73e4173a3c1e69e02ad6b4e3b43e425e57a5be9 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Thu, 9 Feb 2023 22:48:06 +0330 Subject: 3x-ui --- database/db.go | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 database/db.go (limited to 'database/db.go') diff --git a/database/db.go b/database/db.go new file mode 100644 index 00000000..92fca27a --- /dev/null +++ b/database/db.go @@ -0,0 +1,104 @@ +package database + +import ( + "gorm.io/driver/sqlite" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "io/fs" + "os" + "path" + "x-ui/config" + "x-ui/xray" + "x-ui/database/model" +) + +var db *gorm.DB + +func initUser() error { + err := db.AutoMigrate(&model.User{}) + if err != nil { + return err + } + var count int64 + err = db.Model(&model.User{}).Count(&count).Error + if err != nil { + return err + } + if count == 0 { + user := &model.User{ + Username: "admin", + Password: "admin", + } + return db.Create(user).Error + } + return nil +} + +func initInbound() error { + return db.AutoMigrate(&model.Inbound{}) +} + +func initSetting() error { + return db.AutoMigrate(&model.Setting{}) +} +func initInboundClientIps() error { + return db.AutoMigrate(&model.InboundClientIps{}) +} +func initClientTraffic() error { + return db.AutoMigrate(&xray.ClientTraffic{}) +} + +func InitDB(dbPath string) error { + dir := path.Dir(dbPath) + err := os.MkdirAll(dir, fs.ModeDir) + if err != nil { + return err + } + + var gormLogger logger.Interface + + if config.IsDebug() { + gormLogger = logger.Default + } else { + gormLogger = logger.Discard + } + + c := &gorm.Config{ + Logger: gormLogger, + } + db, err = gorm.Open(sqlite.Open(dbPath), c) + if err != nil { + return err + } + + err = initUser() + if err != nil { + return err + } + err = initInbound() + if err != nil { + return err + } + err = initSetting() + if err != nil { + return err + } + err = initInboundClientIps() + if err != nil { + return err + } + err = initClientTraffic() + if err != nil { + return err + } + + return nil +} + +func GetDB() *gorm.DB { + return db +} + +func IsNotFound(err error) bool { + return err == gorm.ErrRecordNotFound +} -- cgit v1.2.3