db.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package config
  2. import (
  3. "github.com/yuguorong/go/log"
  4. "gorm.io/driver/sqlite"
  5. "gorm.io/gorm"
  6. )
  7. type QdDB struct {
  8. dbSQL *gorm.DB
  9. }
  10. func (db *QdDB) ConnectQuarkSQL() {
  11. var err error
  12. db.dbSQL, err = gorm.Open(sqlite.Open("local.db"), &gorm.Config{})
  13. if err != nil {
  14. panic("failed to connect database")
  15. }
  16. }
  17. func (db *QdDB) CloseQuarkSQL() {
  18. }
  19. func (db *QdDB) CreateTbl(cls interface{}) {
  20. err := db.dbSQL.AutoMigrate(cls)
  21. if err != nil {
  22. log.Error(err)
  23. }
  24. }
  25. func (db *QdDB) Save(tbl interface{}) {
  26. t := db.dbSQL.Save(tbl)
  27. if t.Error != nil {
  28. log.Info(t.Error)
  29. }
  30. }
  31. func (db *QdDB) Delete(tbl interface{}) {
  32. db.dbSQL.Where("1=1").Unscoped().Delete(tbl)
  33. }
  34. func (db *QdDB) First(tbl interface{}) {
  35. db.dbSQL.First(tbl)
  36. }
  37. func (db *QdDB) Last(tbl interface{}) {
  38. db.dbSQL.Last(tbl)
  39. }
  40. func (db *QdDB) Find(tbl interface{}, condition ...interface{}) {
  41. if len(condition) > 0 {
  42. db.dbSQL.Find(tbl, condition...)
  43. } else {
  44. db.dbSQL.Find(tbl)
  45. }
  46. }
  47. func (db *QdDB) List(tbl interface{}, field interface{}, name string) {
  48. db.dbSQL.Model(tbl).Association(name).Find(field)
  49. }
  50. func (db *QdDB) Gorm() *gorm.DB {
  51. return db.dbSQL
  52. }
  53. var Qdb *QdDB = nil
  54. func GetDB() *QdDB {
  55. return Qdb
  56. }
  57. func initDB() (db *QdDB) {
  58. db = new(QdDB)
  59. db.ConnectQuarkSQL()
  60. return db
  61. }
  62. func init() {
  63. Qdb = initDB()
  64. }