package database import ( "gorm.io/gorm" "io/fs" "os" "path" "x-ui/database/model" ) import "gorm.io/driver/sqlite" 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 InitDB(dbPath string) error { dir := path.Dir(dbPath) err := os.MkdirAll(dir, fs.ModeDir) if err != nil { return err } c := &gorm.Config{} 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 } return nil } func GetDB() *gorm.DB { return db }