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