Panduan Migrasi Database (Fscm.DatabaseMigration)

Proyek ini menggunakan alat terpisah bernama Fscm.DatabaseMigration untuk melakukan perubahan skema database (DDL) atau penyisipan data awal (DML). Proyek ini dibangun menggunakan .NET dan pustaka DbUp.

Keuntungan menggunakan DbUp adalah setiap perubahan disimpan dalam bentuk file .sql murni yang terurut berdasarkan waktu pembuatannya (timestamp).

Struktur Proyek Fscm.DatabaseMigration

  • Program.cs: Kode utama yang menjalankan DbUp, membaca koneksi database dari appsettings.json atau Environment Variable, dan mengeksekusi semua script SQL yang belum pernah dijalankan.
  • scripts/: Folder tempat semua file .sql disimpan.
  • create-migration.sh / .bat: Script bantuan (utility) untuk mempercepat pembuatan file .sql kosong dengan format nama yang benar (menggunakan timestamp).
  • appsettings.json: File tempat mendefinisikan string koneksi (DefaultConnection) menuju local database.

Cara Menambahkan Tabel atau Perubahan Database

Jika kamu perlu membuat tabel baru, menambahkan kolom, atau membuat Store Procedure, ikuti langkah berikut:

1. Buat File Migrasi Baru

Buka terminal dan arahkan ke dalam folder Fscm.DatabaseMigration, lalu jalankan script pembuatan migrasi:

Linux / macOS / Git Bash:

  ./create-migration.sh Tambah_Tabel_Pengguna
  

Windows (Command Prompt / PowerShell):

  create-migration.bat Tambah_Tabel_Pengguna
  

Perintah ini akan membuat file baru di dalam folder scripts/ dengan nama seperti 20260728115500_Tambah_Tabel_Pengguna.sql.

2. Tulis Perintah SQL

Buka file .sql yang baru saja dibuat, lalu tulis perintah DDL murni. Contoh:

  -- Migration: Tambah_Tabel_Pengguna
CREATE TABLE Users (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    Username VARCHAR(100) NOT NULL,
    PasswordHash VARCHAR(255) NOT NULL,
    Role VARCHAR(50) NOT NULL,
    CreatedAt DATETIME DEFAULT GETDATE()
);
  

3. Jalankan Migrasi

Pastikan connection string di appsettings.json sudah benar menunjuk ke database SQL Server kamu. Kemudian, jalankan aplikasi migrasi:

  dotnet run
  

Jika sukses, kamu akan melihat output terminal berwarna hijau: Success!. DbUp akan otomatis mencatat file ini di tabel internal (biasanya SchemaVersions) sehingga script yang sama tidak akan dieksekusi dua kali pada proses migrasi berikutnya.


Catatan Penting: Jangan pernah merubah isi dari file .sql yang sudah berhasil di- run atau di- deploy. Jika kamu melakukan kesalahan, buatlah file migrasi baru untuk melakukan perbaikan (misalnya ALTER TABLE...).