Repository
Ikhtisar
Pada objek Collection tertentu, Anda dapat mengambil objek Repository-nya untuk melakukan operasi baca dan tulis pada tabel data.
Query
Query Dasar
Pada objek Repository, panggil method-method find* untuk mengeksekusi operasi query, semua method query mendukung parameter filter untuk memfilter data.
Operator
Parameter filter di Repository juga menyediakan berbagai operator, mengeksekusi operasi query yang lebih beragam.
Untuk informasi detail operator lihat Filter Operators.
Kontrol Field
Saat operasi query, melalui parameter fields, except, appends dapat mengontrol field output.
fields: Menentukan field outputexcept: Mengecualikan field outputappends: Menambahkan output field asosiasi
Query Field Asosiasi
Parameter filter mendukung filtering berdasarkan field asosiasi, contoh:
Field asosiasi juga dapat di-nested
Sorting
Melalui parameter sort, dapat mengurutkan hasil query.
Juga dapat sorting berdasarkan field objek asosiasi
Membuat
Pembuatan Dasar
Membuat objek data baru melalui Repository.
Membuat Asosiasi
Saat membuat dapat sekaligus membuat objek asosiasi, mirip dengan query, juga mendukung penggunaan nested objek asosiasi, contoh:
Jika objek asosiasi sudah ada di database, Anda dapat memasukkan ID-nya, saat membuat akan dibangun relasi asosiasi dengan objek asosiasi tersebut.
Update
Update Dasar
Setelah mendapatkan objek data, Anda dapat langsung memodifikasi properti pada objek data (Model), lalu memanggil method save untuk menyimpan perubahan.
Objek data Model extends dari Sequelize Model, untuk operasi pada Model lihat Sequelize Model.
Juga dapat mengupdate data melalui Repository:
Saat update, Anda dapat mengontrol field yang diupdate melalui parameter whitelist, blacklist, contoh:
Update Field Asosiasi
Saat update, dapat mengatur objek asosiasi, contoh:
Menghapus
Dapat memanggil method destroy() di Repository untuk operasi hapus. Saat menghapus harus menentukan kondisi filter:
Constructor
Biasanya tidak dipanggil langsung oleh developer, terutama setelah mendaftarkan tipe melalui db.registerRepositories(), lalu menentukan tipe repository terdaftar yang sesuai di parameter db.colletion(), dan menyelesaikan instantiasi.
Signature
constructor(collection: Collection)
Contoh
Anggota Instance
database
Instance manajemen database tempat konteks berada.
collection
Instance manajemen tabel data yang sesuai.
model
Class model data yang sesuai.
Method Instance
find()
Query data set dari database, dapat menentukan kondisi filter, sorting, dll.
Signature
async find(options?: FindOptions): Promise<Model[]>
Tipe
Detail
filter: Filter
Kondisi query, digunakan untuk memfilter hasil data. Dalam parameter query yang dimasukkan, key adalah nama field yang akan di-query, value dapat dimasukkan nilai yang akan di-query,
juga dapat dikombinasikan dengan operator untuk filter data dengan kondisi lainnya.
Untuk operator lebih lanjut lihat Operator Query.
filterByTk: TargetKey
Query data berdasarkan TargetKey, adalah cara shortcut untuk parameter filter. Field spesifik untuk TargetKey,
dapat dikonfigurasi di Collection, default adalah primaryKey.
fields: string[]
Kolom query, digunakan untuk mengontrol hasil field data. Setelah memasukkan parameter ini, hanya akan mengembalikan field yang ditentukan.
except: string[]
Kolom yang dikecualikan, digunakan untuk mengontrol hasil field data. Setelah memasukkan parameter ini, field yang dimasukkan tidak akan ditampilkan.
appends: string[]
Kolom yang ditambahkan, digunakan untuk memuat data asosiasi. Setelah memasukkan parameter ini, field asosiasi yang ditentukan akan ditampilkan bersamaan.
sort: string[] | string
Menentukan cara sorting hasil query, parameter yang dimasukkan adalah nama field, secara default sort ascending asc, jika perlu sort descending desc,
dapat menambahkan tanda - di depan nama field, contoh: ['-id', 'name'], artinya sort id desc, name asc.
limit: number
Membatasi jumlah hasil, sama dengan limit di SQL
offset: number
Offset query, sama dengan offset di SQL
Contoh
findOne()
Query satu record dengan kondisi tertentu dari database. Setara dengan Model.findOne() di Sequelize.
Signature
async findOne(options?: FindOneOptions): Promise<Model | null>
Contoh
count()
Query total jumlah data dengan kondisi tertentu dari database. Setara dengan Model.count() di Sequelize.
Signature
count(options?: CountOptions): Promise<number>
Tipe
Contoh
findAndCount()
Query data set dan jumlah hasil dengan kondisi tertentu dari database. Setara dengan Model.findAndCountAll() di Sequelize.
Signature
async findAndCount(options?: FindAndCountOptions): Promise<[Model[], number]>
Tipe
Detail
Parameter query sama dengan find(). Nilai return adalah array, elemen pertama adalah hasil query, elemen kedua adalah total hasil.
create()
Insert satu record data baru ke tabel data. Setara dengan Model.create() di Sequelize. Saat objek data yang akan dibuat membawa informasi field relasi, akan sekaligus membuat atau update record data relasi yang sesuai.
Signature
async create<M extends Model>(options: CreateOptions): Promise<M>
Contoh
createMany()
Insert beberapa record data baru ke tabel data. Setara dengan memanggil method create() beberapa kali.
Signature
createMany(options: CreateManyOptions): Promise<Model[]>
Tipe
Detail
records: Array objek data dari record yang akan dibuat.transaction: Objek transaction. Jika tidak ada parameter transaction yang dimasukkan, method ini akan otomatis membuat transaction internal.
Contoh
update()
Update data di tabel data. Setara dengan Model.update() di Sequelize. Saat objek data yang akan diupdate membawa informasi field relasi, akan sekaligus membuat atau update record data relasi yang sesuai.
Signature
async update<M extends Model>(options: UpdateOptions): Promise<M>
Contoh
destroy()
Menghapus data di tabel data. Setara dengan Model.destroy() di Sequelize.
Signature
async destory(options?: TargetKey | TargetKey[] | DestoryOptions): Promise<number>
Tipe
Detail
filter: Menentukan kondisi filter untuk record yang akan dihapus. Untuk penggunaan detail Filter, lihat methodfind().filterByTk: Menentukan kondisi filter berdasarkan TargetKey untuk record yang akan dihapus.truncate: Apakah mengosongkan data tabel, berlaku saat tidak ada parameterfilterataufilterByTkyang dimasukkan.transaction: Objek transaction. Jika tidak ada parameter transaction yang dimasukkan, method ini akan otomatis membuat transaction internal.

