feat: add title columns and migration tracking
This commit is contained in:
@@ -17,6 +17,56 @@ import (
|
||||
"malago/internal/templates"
|
||||
)
|
||||
|
||||
func runMigrations(db *sql.DB) error {
|
||||
// Create migration tracking table
|
||||
_, err := db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS migration_version (
|
||||
name TEXT PRIMARY KEY,
|
||||
applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
`)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
migrations := []string{
|
||||
"migrations/001_init.sql",
|
||||
"migrations/002_add_anime_titles.sql",
|
||||
}
|
||||
|
||||
for _, migrationFile := range migrations {
|
||||
// Check if migration already applied
|
||||
var exists int
|
||||
err := db.QueryRow("SELECT COUNT(*) FROM migration_version WHERE name = ?", migrationFile).Scan(&exists)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if exists > 0 {
|
||||
log.Printf("migration %s already applied, skipping", migrationFile)
|
||||
continue
|
||||
}
|
||||
|
||||
// Read and execute migration
|
||||
migrationSQL, err := os.ReadFile(migrationFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := db.Exec(string(migrationSQL)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Mark as applied
|
||||
_, err = db.Exec("INSERT INTO migration_version (name) VALUES (?)", migrationFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("migration %s applied successfully", migrationFile)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
dbFile := os.Getenv("DATABASE_FILE")
|
||||
if dbFile == "" {
|
||||
@@ -29,12 +79,8 @@ func main() {
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// Run migrations (assuming local dev setup, simplistic execution)
|
||||
migrationSQL, err := os.ReadFile("migrations/001_init.sql")
|
||||
if err != nil {
|
||||
log.Fatalf("failed to read migrations: %v", err)
|
||||
}
|
||||
if _, err := db.Exec(string(migrationSQL)); err != nil {
|
||||
// Run migrations with tracking
|
||||
if err := runMigrations(db); err != nil {
|
||||
log.Fatalf("failed to run migrations: %v", err)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user