2
0

sqlite.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package db
  2. import (
  3. "os"
  4. "path/filepath"
  5. "gorm.io/driver/sqlite"
  6. "gorm.io/gorm"
  7. "gorm.io/gorm/logger"
  8. )
  9. // sqliteConnector for initializing and
  10. // connecting to a sqlite database.
  11. type sqliteConnector struct{}
  12. // sqliteConnector.connect connects and
  13. // initializes a connection to sqlite.
  14. func (s *sqliteConnector) connect() (*gorm.DB, error) {
  15. // ensure data dir exists.
  16. _, err := os.Stat("data")
  17. if err != nil {
  18. if os.IsNotExist(err) {
  19. err = os.Mkdir("data", 0700)
  20. if err != nil {
  21. return nil, err
  22. }
  23. } else {
  24. return nil, err
  25. }
  26. }
  27. dbFilePath := filepath.Join("data", "netmaker.db")
  28. // ensure netmaker_v1.db exists.
  29. _, err = os.Stat(dbFilePath)
  30. if err != nil {
  31. if os.IsNotExist(err) {
  32. file, err := os.Create(dbFilePath)
  33. if err != nil {
  34. return nil, err
  35. }
  36. err = file.Close()
  37. if err != nil {
  38. return nil, err
  39. }
  40. } else {
  41. return nil, err
  42. }
  43. }
  44. return gorm.Open(sqlite.Open(dbFilePath), &gorm.Config{
  45. Logger: logger.Default.LogMode(logger.Silent),
  46. })
  47. }