db.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package sqlite
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/IceWhaleTech/CasaOS/pkg/utils/file"
  6. model2 "github.com/IceWhaleTech/CasaOS/service/model"
  7. "gorm.io/driver/sqlite"
  8. "gorm.io/gorm"
  9. )
  10. var gdb *gorm.DB
  11. func GetDb(dbPath string) *gorm.DB {
  12. if gdb != nil {
  13. return gdb
  14. }
  15. // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
  16. //dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local", m.User, m.PWD, m.IP, m.Port, m.DBName)
  17. //db, err := gorm.Open(mysql2.Open(dsn), &gorm.Config{})
  18. file.IsNotExistMkDir(dbPath)
  19. db, err := gorm.Open(sqlite.Open(dbPath+"/casaOS.db"), &gorm.Config{})
  20. c, _ := db.DB()
  21. c.SetMaxIdleConns(10)
  22. c.SetMaxOpenConns(100)
  23. c.SetConnMaxIdleTime(time.Second * 1000)
  24. if err != nil {
  25. fmt.Println("连接数据失败!")
  26. panic("数据库连接失败")
  27. return nil
  28. }
  29. gdb = db
  30. err = db.AutoMigrate(&model2.TaskDBModel{}, &model2.AppNotify{}, &model2.AppListDBModel{}, &model2.SerialDisk{}, model2.PersonDownloadDBModel{}, model2.FriendModel{}, model2.PersonDownRecordDBModel{}, model2.ApplicationModel{})
  31. if err != nil {
  32. fmt.Println("检查和创建数据库出错", err)
  33. }
  34. return db
  35. }