SearchLight Model & Migrasi
Penjelasan
Model di SearchLight didefinisikan sebagai struct Julia yang meng-`extend` tipe `AbstractModel`, dengan tiap field merepresentasikan kolom tabel. Migrasi dikelola lewat command line `SearchLight.Migrations`, yang men-generate file migrasi bertanggal dan menjalankannya secara berurutan mirip sistem migrasi di framework web lain. Karena Julia bertipe kuat, field model biasanya diberi tipe eksplisit (`Int`, `String`, `Float64`), sehingga kesalahan tipe data bisa tertangkap lebih awal dibanding ORM dengan tipe dinamis penuh.
Contoh Konsep
using SearchLight
mutable struct Post <: AbstractModel
id::DbId
judul::String
isi::String
Post(; id = DbId(), judul = "", isi = "") = new(id, judul, isi)
end
# Migrasi (app/db/migrations/xxxx_create_table_posts.jl)
function up()
SearchLight.Migrations.create_table(:posts) do
[
pk()
column(:judul, :string)
column(:isi, :text)
]
end
end
function down()
SearchLight.Migrations.drop_table(:posts)
end
Praktikum
Buat struct model Produk dengan field id, nama, dan harga, lalu tulis migrasi untuk membuat tabel produk.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Selalu isi fungsi `down()` di migrasi supaya perubahan skema bisa di-rollback kalau ada kesalahan, jangan hanya fokus ke `up()`.