Study
Genie

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.

Editor Latihan

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()`.