123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 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",
- LoginSecret: "",
- }
- 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
- }
|