/db/database.go

https://github.com/yuchenyang1994/docker-doge · Go · 67 lines · 54 code · 12 blank · 1 comment · 4 complexity · 782b79cc9ac378ae30d4808556903788 MD5 · raw file

  1. package db
  2. import (
  3. "log"
  4. "docker-doge/configs"
  5. "sync"
  6. "github.com/gin-gonic/gin"
  7. "github.com/jinzhu/gorm"
  8. _ "github.com/jinzhu/gorm/dialects/sqlite"
  9. )
  10. var (
  11. db *gorm.DB
  12. once sync.Once
  13. err error
  14. )
  15. func GetDbInstance(c *gin.Context) *gorm.DB {
  16. return c.MustGet("db").(*gorm.DB)
  17. }
  18. func CreateDb() *gorm.DB {
  19. once.Do(func() {
  20. conf := configs.Conf()
  21. db, err = gorm.Open(conf.DATABASE_BACKEND, conf.DATABASE_URI)
  22. db.DB().SetMaxIdleConns(10)
  23. db.DB().SetMaxOpenConns(100)
  24. if err != nil {
  25. log.Fatal("db error")
  26. }
  27. })
  28. return db
  29. }
  30. func GetTestDB() *gorm.DB {
  31. db, err := gorm.Open("sqlite3", "/tmp/test.db")
  32. if err != nil {
  33. log.Fatal("db error")
  34. }
  35. return db
  36. }
  37. // 迁移数据库模型函数
  38. func MigrationDB(db *gorm.DB) {
  39. db.AutoMigrate(
  40. &User{},
  41. &UserGroup{})
  42. }
  43. func CreateUserGroup(db *gorm.DB) {
  44. u := UserGroup{GroupName: "ROOT"}
  45. db.NewRecord(u)
  46. db.Create(&u)
  47. }
  48. func DataBase() gin.HandlerFunc {
  49. return func(c *gin.Context) {
  50. db := CreateDb()
  51. c.Set("db", db)
  52. c.Next()
  53. db.Close()
  54. }
  55. }