netmaker/db/sqlite.go
Vishal Dalwadi 7f40371ffd
Task/DB-Migration: Add Key-Value to SQL Migration functionality. (#3380)
* feat(go): add db package;

* feat(go): add jobs table;

* feat(go): add schema migration facade;

* refactor(go): use custom key type to avoid collisions;
2025-04-12 14:07:57 +04:00

54 lines
1 KiB
Go

package db
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"os"
"path/filepath"
)
// sqliteConnector for initializing and
// connecting to a sqlite database.
type sqliteConnector struct{}
// sqliteConnector.connect connects and
// initializes a connection to sqlite.
func (s *sqliteConnector) connect() (*gorm.DB, error) {
// ensure data dir exists.
_, err := os.Stat("data")
if err != nil {
if os.IsNotExist(err) {
err = os.Mkdir("data", 0700)
if err != nil {
return nil, err
}
} else {
return nil, err
}
}
dbFilePath := filepath.Join("data", "netmaker_v1.db")
// ensure netmaker_v1.db exists.
_, err = os.Stat(dbFilePath)
if err != nil {
if os.IsNotExist(err) {
file, err := os.Create(dbFilePath)
if err != nil {
return nil, err
}
err = file.Close()
if err != nil {
return nil, err
}
} else {
return nil, err
}
}
return gorm.Open(sqlite.Open(dbFilePath), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
})
}