db.go 796 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package db
  2. import (
  3. "errors"
  4. "sync"
  5. "github.com/jinzhu/gorm"
  6. _ "github.com/lib/pq"
  7. _ "github.com/mattn/go-sqlite3"
  8. )
  9. const (
  10. SQLITE_DRIVER = "sqlite3"
  11. POSTGRES_DRIVER = "postgres"
  12. )
  13. type DB struct {
  14. orm *gorm.DB
  15. mutex *sync.Mutex
  16. driver string
  17. }
  18. // databe driver name
  19. //support databes 'sqlite3','postgres'
  20. func Open(driver string, args ...interface{}) (*DB, error) {
  21. if driver == "" {
  22. return nil, errors.New("Invalid driver name.")
  23. }
  24. d, err := gorm.Open(driver, args)
  25. if err != nil {
  26. return nil, err
  27. }
  28. return &DB{orm: d, mutex: &sync.Mutex{}, driver: driver}, nil
  29. }
  30. func (db DB) isSqlite() bool {
  31. if db.driver == SQLITE_DRIVER {
  32. return true
  33. }
  34. return false
  35. }
  36. func (db DB) isPostgres() bool {
  37. if db.driver == POSTGRES_DRIVER {
  38. return true
  39. }
  40. return false
  41. }