package database import ( "database/sql" "fmt" "log" _ "modernc.org/sqlite" ) func Initialize(dbPath string) (*sql.DB, error) { db, err := sql.Open("sqlite", dbPath+"?_pragma=journal_mode(WAL)&_pragma=foreign_keys(1)") if err != nil { return nil, fmt.Errorf("opening database: %w", err) } if err := db.Ping(); err != nil { return nil, fmt.Errorf("pinging database: %w", err) } db.SetMaxOpenConns(1) // SQLite handles one writer at a time if err := runMigrations(db); err != nil { return nil, fmt.Errorf("running migrations: %w", err) } if err := seedData(db); err != nil { return nil, fmt.Errorf("seeding data: %w", err) } log.Println("Database initialized successfully") return db, nil }