36 lines
646 B
Go
36 lines
646 B
Go
package db
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
var DB *sql.DB
|
|
|
|
func InitDB(filepath string) {
|
|
var err error
|
|
DB, err = sql.Open("sqlite3", filepath)
|
|
if err != nil {
|
|
log.Fatal("Failed to open database:", err)
|
|
}
|
|
|
|
if err = DB.Ping(); err != nil {
|
|
log.Fatal("Failed to ping database:", err)
|
|
}
|
|
|
|
_, err = DB.Exec(Schema)
|
|
if err != nil {
|
|
log.Fatal("Failed to create schema:", err)
|
|
}
|
|
|
|
// Enable foreign keys
|
|
_, err = DB.Exec("PRAGMA foreign_keys = ON;")
|
|
if err != nil {
|
|
log.Println("Warning: Failed to enable foreign keys:", err)
|
|
}
|
|
|
|
log.Println("Database initialized successfully at", filepath)
|
|
}
|