51 lines
969 B
Go
51 lines
969 B
Go
package storage
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
|
|
"synlotto-website/config"
|
|
"synlotto-website/logging"
|
|
|
|
_ "modernc.org/sqlite"
|
|
)
|
|
|
|
func InitDB(filepath string) *sql.DB {
|
|
var err error
|
|
cfg := config.Get()
|
|
db, err := sql.Open("sqlite", filepath)
|
|
if err != nil {
|
|
log.Fatal("❌ Failed to open DB:", err)
|
|
}
|
|
|
|
schemas := []string{
|
|
SchemaUsers,
|
|
SchemaThunderballResults,
|
|
SchemaThunderballPrizes,
|
|
SchemaLottoResults,
|
|
SchemaMyTickets,
|
|
SchemaUsersMessages,
|
|
SchemaUsersNotifications,
|
|
SchemaAuditLog,
|
|
SchemaLogTicketMatching,
|
|
SchemaAdminAccessLog,
|
|
SchemaNewAuditLog,
|
|
SchemaSyndicates,
|
|
SchemaSyndicateMembers,
|
|
SchemaSyndicateInvites,
|
|
SchemaSyndicateInviteTokens,
|
|
}
|
|
if cfg == nil {
|
|
logging.Error("❌ config is nil — did config.Init() run before InitDB?")
|
|
panic("config not ready")
|
|
}
|
|
|
|
for _, stmt := range schemas {
|
|
if _, err := db.Exec(stmt); err != nil {
|
|
log.Fatalf("❌ Failed to apply schema: %v", err)
|
|
}
|
|
}
|
|
|
|
return db
|
|
}
|