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 }