up
This commit is contained in:
@@ -3,6 +3,7 @@ package db
|
||||
import (
|
||||
"database/sql"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
@@ -36,10 +37,53 @@ func Migrate(db *sql.DB) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := migrateAddBookingSource(db); err != nil {
|
||||
log.Printf("⚠ migration booking source: %v", err)
|
||||
}
|
||||
log.Println("✓ Migrations appliquées")
|
||||
return nil
|
||||
}
|
||||
|
||||
// migrateAddBookingSource ajoute 'booking' aux sources autorisées de calendar_events.
|
||||
// Vérifie d'abord le DDL pour ne s'exécuter qu'une seule fois.
|
||||
func migrateAddBookingSource(db *sql.DB) error {
|
||||
var ddl string
|
||||
if err := db.QueryRow(`SELECT sql FROM sqlite_master WHERE name='calendar_events' AND type='table'`).Scan(&ddl); err != nil {
|
||||
return nil // table absente, rien à faire
|
||||
}
|
||||
if strings.Contains(ddl, "'booking'") {
|
||||
return nil // déjà migré
|
||||
}
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer tx.Rollback()
|
||||
for _, step := range []string{
|
||||
`CREATE TABLE calendar_events_new (
|
||||
id TEXT PRIMARY KEY,
|
||||
property_id TEXT NOT NULL REFERENCES properties(id) ON DELETE CASCADE,
|
||||
title TEXT,
|
||||
start_date DATE NOT NULL,
|
||||
end_date DATE NOT NULL,
|
||||
source TEXT NOT NULL CHECK(source IN ('airbnb','manual','booking')),
|
||||
ical_uid TEXT,
|
||||
notes TEXT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(property_id, ical_uid)
|
||||
)`,
|
||||
`INSERT INTO calendar_events_new SELECT * FROM calendar_events`,
|
||||
`DROP TABLE calendar_events`,
|
||||
`ALTER TABLE calendar_events_new RENAME TO calendar_events`,
|
||||
} {
|
||||
if _, err := tx.Exec(step); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
log.Println("✓ Migration calendar_events: source 'booking' ajouté")
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
const sqlCreateUsers = `
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id TEXT PRIMARY KEY,
|
||||
|
||||
Reference in New Issue
Block a user