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