1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package database
- import (
- "io/fs"
- "os"
- "path"
- "x-ui/config"
- "x-ui/database/model"
- "x-ui/xray"
- "gorm.io/driver/sqlite"
- "gorm.io/gorm"
- "gorm.io/gorm/logger"
- )
- 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 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 = initClientTraffic()
- if err != nil {
- return err
- }
-
- return nil
- }
- func GetDB() *gorm.DB {
- return db
- }
- func IsNotFound(err error) bool {
- return err == gorm.ErrRecordNotFound
- }
|