Files
GoMembership/internal/database/db.go
$(pass /github/name) 4ba0ce11d4 embedded schema.sql
2024-07-07 16:52:44 +02:00

56 lines
945 B
Go

package database
import (
"database/sql"
"os"
"GoMembership/internal/config"
"GoMembership/pkg/logger"
"embed"
_ "github.com/mattn/go-sqlite3"
)
//go:embed schema.sql
var fs embed.FS
func initializeDB(dbPath string) error {
db, err := sql.Open("sqlite3", dbPath)
if err != nil {
return err
}
defer db.Close()
schema, err := fs.ReadFile("schema.sql")
if err != nil {
return err
}
_, err = db.Exec(string(schema))
if err != nil {
return err
}
return nil
}
func Connect(DBcfg config.DatabaseConfig) *sql.DB {
_, err := os.Stat(DBcfg.DBPath)
if os.IsNotExist(err) {
initErr := initializeDB(DBcfg.DBPath)
if initErr != nil {
logger.Error.Fatalf("Couldn't create database: %v", initErr)
}
logger.Info.Println("Created new database")
}
db, err := sql.Open("sqlite3", DBcfg.DBPath)
if err != nil {
logger.Error.Fatal(err)
}
if err := db.Ping(); err != nil {
logger.Error.Fatal(err)
}
return db
}