1
0

db.go 957 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package ovpm
  2. import (
  3. "github.com/sirupsen/logrus"
  4. "github.com/jinzhu/gorm"
  5. // We blank import sqlite here because gorm needs it.
  6. _ "github.com/jinzhu/gorm/dialects/sqlite"
  7. )
  8. var db *DB
  9. // DB represents a persistent storage.
  10. type DB struct {
  11. *gorm.DB
  12. }
  13. // CreateDB prepares and returns new storage.
  14. //
  15. // It should be run at the start of the program.
  16. func CreateDB(dialect string, args ...interface{}) *DB {
  17. if len(args) > 0 && args[0] == "" {
  18. args[0] = _DefaultDBPath
  19. }
  20. var err error
  21. dbase, err := gorm.Open(dialect, args...)
  22. if err != nil {
  23. logrus.Fatalf("couldn't open sqlite database %v: %v", args, err)
  24. }
  25. dbase.AutoMigrate(&dbUserModel{})
  26. dbase.AutoMigrate(&dbServerModel{})
  27. dbase.AutoMigrate(&dbRevokedModel{})
  28. dbase.AutoMigrate(&dbNetworkModel{})
  29. dbPTR := &DB{DB: dbase}
  30. db = dbPTR
  31. return dbPTR
  32. }
  33. // Cease closes the database.
  34. //
  35. // It should be run at the exit of the program.
  36. func (db *DB) Cease() {
  37. db.DB.Close()
  38. }