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 }