ORM di Skalfa API
Model di Skalfa API adalah lapisan ORM ringan yang dibangun di atas Knex.js. Model bertugas mendefinisikan skema data, relasi, casting, hook lifecycle, serta helper query yang terintegrasi langsung dengan ControllerContext.
Keterangan Ekstensi:ORM ini merupakan komponen modular opsional. Anda dapat menambahkannya ke proyek backend Anda menggunakan perintah CLI berikut:
Kode berhasil di copy!
5
Mendefinisikan Model
Model dibuat dengan mewarisi abstract class Model. Field dan perilakunya didefinisikan menggunakan decorator agar deklaratif dan mudah dibaca.
Kode berhasil di copy!
5
- string / number / boolean / date / json — Casting otomatis dari dan ke database
- fillable — Field boleh diisi melalui payload
- selectable — Field boleh di-select
- searchable — Field bisa digunakan untuk pencarian
Query Menggunakan Model
Query dimulai dengan Model.query(). Query builder ini merupakan Knex QueryBuilder yang telah diperluas.
Kode berhasil di copy!
5
Search
Kode berhasil di copy!
5
Filter
Kode berhasil di copy!
5
Select
Kode berhasil di copy!
5
Sort
Kode berhasil di copy!
5
Expand
Kode berhasil di copy!
5
Paginate
Kode berhasil di copy!
5
Option
Kode berhasil di copy!
5
Paginate Or Option
Kode berhasil di copy!
5
Insert / Menyimpan Data
Model mendukung pendekatan instance maupun static helper.
Kode berhasil di copy!
5
Update / Mengubah Data
Update hanya akan menyimpan field yang berubah (dirty checking). Delete mendukung soft delete dan force delete.
Kode berhasil di copy!
5
Pump & Upsert Data
Kode berhasil di copy!
5
Delete / Hapus Data
Kode berhasil di copy!
5
Relasi Antar Model
Relasi didefinisikan menggunakan decorator seperti HasMany, HasOne, BelongsTo, dan BelongsToMany.
Has One
Kode berhasil di copy!
5
Has Many
Kode berhasil di copy!
5
Belongs To
Kode berhasil di copy!
5
Belongs To Many
Kode berhasil di copy!
5
Attribute Model
Kode berhasil di copy!
5
Hook Model
Model mendukung hook lifecycle seperti before-create, after-create, before-update, after-update, before-delete, dan after-delete untuk mengontrol data secara otomatis sebelum atau setelah operasi database.
Pendaftaran Hook Menggunakan Decorator (@On)
Hook didaftarkan sebagai instance method di dalam kelas model menggunakan decorator @On(event).
Kode berhasil di copy!
5
Menonaktifkan Hook dari Controller (Instance-based)
Gunakan model.off(event) untuk menonaktifkan hook tertentu saat menjalankan operasi khusus dari controller.
Kode berhasil di copy!
5
Mendaftarkan Hook Dinamis dari Controller (Instance-based)
Gunakan model.on(event, callback) untuk mendaftarkan hook dinamis yang hanya berlaku untuk instance model tersebut.
Kode berhasil di copy!
5
Where Relasi
Where Has
Kode berhasil di copy!
5
Where Doesnt Have
Kode berhasil di copy!
5