Databasemigratie

Finch heeft een ingebouwd migratiesysteem dat schemawijzigingen in de loop van de tijd beheert.

Migratie-commando's

Commando Beschrijving
finch migrate --init Alle openstaande migraties uitvoeren
finch migrate --create --name <name> Nieuw migratiebestand aanmaken
finch migrate --rollback Laatste migratie terugdraaien
finch migrate --list Status van alle migraties weergeven
finch migrate --init --sqlite Uitvoeren voor SQLite
finch migrate --create --name <name> --sqlite Aanmaken voor SQLite

Migratiebestandsstructuur

Migraties bevinden zich in ./migrations/ (MySQL) of ./migrations_sqlite/ (SQLite):

-- NEW VERSION
CREATE TABLE articles (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    body TEXT,
    published TINYINT(1) DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ROLL BACK
DROP TABLE IF EXISTS articles;

Elk migratiebestand moet zowel een -- NEW VERSION-sectie (voor toepassing) als een -- ROLL BACK-sectie (voor terugdraaien) bevatten.

Bestandsnaming

Migratiebestanden worden benoemd met een tijdstempel:

2024_01_15_143022_create_articles_table.sql

Automatisch uitvoeren bij opstarten

Je kunt migraties automatisch laten uitvoeren bij het opstarten van de applicatie:

FinchConfigs(
  autoMigrate: true,
)

Waarschuwing: Gebruik deze optie met voorzichtigheid in productie.

Voorbeeldworkflow

# Migratie aanmaken voor een nieuwe tabel
finch migrate --create --name create_products_table

# Bewerk het aangemaakte bestand in migrations/
# Voer daarna de migratie uit
finch migrate --init

# Als terugdraaien nodig is
finch migrate --rollback