mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-03-01 01:20:49 +03:00
105 lines
1.6 KiB
Go
105 lines
1.6 KiB
Go
![]() |
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
|
||
|
}
|