Migration پایگاه داده
فینچ یک سیستم migration داخلی دارد که تغییرات schema را در طول زمان مدیریت میکند.
دستورات Migration
| دستور | توضیح |
|---|---|
finch migrate --init |
اجرای تمام migration های در انتظار |
finch migrate --create --name <name> |
ساخت فایل migration جدید |
finch migrate --rollback |
برگرداندن آخرین migration |
finch migrate --list |
نمایش وضعیت تمام migration ها |
finch migrate --init --sqlite |
اجرا برای SQLite |
finch migrate --create --name <name> --sqlite |
ساخت برای SQLite |
ساختار فایل Migration
Migration ها در ./migrations/ (MySQL) یا ./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;
هر فایل migration باید هر دو بخش -- NEW VERSION (برای اجرا) و -- ROLL BACK (برای rollback) را داشته باشد.
نامگذاری فایل
فایلهای migration با timestamp نامگذاری میشوند:
2024_01_15_143022_create_articles_table.sql
اجرای خودکار در راهاندازی
میتوانید migration ها را در راهاندازی برنامه به صورت خودکار اجرا کنید:
FinchConfigs(
autoMigrate: true,
)
هشدار: این گزینه را با احتیاط در production استفاده کنید.
مثال Workflow
# ساخت migration برای جدول جدید
finch migrate --create --name create_products_table
# ویرایش فایل ایجادشده در migrations/
# سپس اجرای migration
finch migrate --init
# در صورت نیاز به rollback
finch migrate --rollback