Files
GoMembership/internal/database/db.go
$(pass /github/name) 96f008d67e added mail functionality
2024-07-03 12:35:41 +02:00

49 lines
943 B
Go

package database
import (
"GoMembership/internal/config"
"GoMembership/pkg/logger"
"database/sql"
"os"
_ "github.com/mattn/go-sqlite3"
)
func initializeDB(dbPath string, schemaPath string) error {
db, err := sql.Open("sqlite3", dbPath)
if err != nil {
return err
}
defer db.Close()
schema, err := os.ReadFile(schemaPath)
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, "internal/database/schema.sql")
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
}