| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- package model
 
- import (
 
- 	"gorm.io/driver/mysql"
 
- 	"gorm.io/driver/sqlite"
 
- 	"gorm.io/gorm"
 
- 	"message-pusher/common"
 
- 	"os"
 
- )
 
- var DB *gorm.DB
 
- func createRootAccountIfNeed() error {
 
- 	var user User
 
- 	//if user.Status != common.UserStatusEnabled {
 
- 	if err := DB.First(&user).Error; err != nil {
 
- 		common.SysLog("no user exists, create a root user for you: username is root, password is 123456")
 
- 		hashedPassword, err := common.Password2Hash("123456")
 
- 		if err != nil {
 
- 			return err
 
- 		}
 
- 		rootUser := User{
 
- 			Username:    "root",
 
- 			Password:    hashedPassword,
 
- 			Role:        common.RoleRootUser,
 
- 			Status:      common.UserStatusEnabled,
 
- 			DisplayName: "Root User",
 
- 		}
 
- 		DB.Create(&rootUser)
 
- 	}
 
- 	return nil
 
- }
 
- func CountTable(tableName string) (num int64) {
 
- 	DB.Table(tableName).Count(&num)
 
- 	return
 
- }
 
- func InitDB() (err error) {
 
- 	var db *gorm.DB
 
- 	if os.Getenv("SQL_DSN") != "" {
 
- 		// Use MySQL
 
- 		db, err = gorm.Open(mysql.Open(os.Getenv("SQL_DSN")), &gorm.Config{
 
- 			PrepareStmt: true, // precompile SQL
 
- 		})
 
- 	} else {
 
- 		// Use SQLite
 
- 		db, err = gorm.Open(sqlite.Open(common.SQLitePath), &gorm.Config{
 
- 			PrepareStmt: true, // precompile SQL
 
- 		})
 
- 		common.SysLog("SQL_DSN not set, using SQLite as database")
 
- 	}
 
- 	if err == nil {
 
- 		DB = db
 
- 		err := db.AutoMigrate(&User{})
 
- 		if err != nil {
 
- 			return err
 
- 		}
 
- 		err = db.AutoMigrate(&Option{})
 
- 		if err != nil {
 
- 			return err
 
- 		}
 
- 		err = createRootAccountIfNeed()
 
- 		return err
 
- 	} else {
 
- 		common.FatalLog(err)
 
- 	}
 
- 	return err
 
- }
 
- func CloseDB() error {
 
- 	sqlDB, err := DB.DB()
 
- 	if err != nil {
 
- 		return err
 
- 	}
 
- 	err = sqlDB.Close()
 
- 	return err
 
- }
 
 
  |