db.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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.sqlite"), &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) Table(tbl interface{}) {
  48. db.dbSQL.Find(tbl)
  49. }
  50. func (db *QdDB) List(tbl interface{}, field interface{}, name string) {
  51. db.dbSQL.Model(tbl).Association(name).Find(field)
  52. }
  53. func (db *QdDB) Gorm() *gorm.DB {
  54. return db.dbSQL
  55. }
  56. var Qdb *QdDB = nil
  57. func GetDB() *QdDB {
  58. return Qdb
  59. }
  60. func initDB() (db *QdDB) {
  61. db = new(QdDB)
  62. db.ConnectQuarkSQL()
  63. return db
  64. }
  65. func init() {
  66. Qdb = initDB()
  67. }