tables

Pengembang dapat menggunakan fungsi pada table untuk melakukan operasi terhadap tabel.

ctx.moco.tables;

Table methods

findAll(args)

Method findAll berfungsi untuk mendapatkan semua data berdasarkan parameters yang dikirim.

Args properties

nametypedescription
tablestringnama tabel
selectarray of stringmemilih kolom yang akan diminta (kosongkan untuk mengambil semua kolom)
filterstringfilter data yang akan diminta (odata format)
limitnumberbatas jumlah data yang diminta (biasa digunakan untuk pagination)
offsetnumberjumlah data yang dilewati dari index pertama (digunakan sebagai pagination)
orderByarray of objectkolom yang digunakan untuk mengurutkan data
orderBy[n].columnstringnama kolom
orderBy[n].orderenum
"asc", "desc"
opsi urutan bisa berisi "asc" atau "desc"
includearraydaftar tabel relasi
databasestringID dari database yang akan digunakan (default adalah "main")
transactionobjectdatabase transaction (knex)
lockenum
"UPDATE", "SHARE"
Mode row-locking untuk mendukung concurrent access
skipLockedbooleanMode SKIP LOCKED untuk bypass row yang telah dikunci (row-locked) oleh proses lainnya

Return

Promise<Object>

Object berisikan results(Array) dan count(Int)

Example

mengambil data dari table "books" dengan filter kolom "name".

const result = await ctx.moco.tables.findAll({
table: "books",
select: ["name"],
});
console.log(result); // array dari "books" dengan kolom nama saja.

findOne(args)

Method findOne berfungsi untuk mendapatkan satu baris data berdasarkan filter yang dibuat.

Args properties

nametypedescription
tablestringnama tabel
selectarray of stringmemilih kolom yang akan diminta (kosongkan untuk mengambil semua kolom)
filterstringfilter data yang akan diminta (odata format)
includearraydaftar tabel relasi
databasestringID dari database yang akan digunakan (default adalah "main")
transactionobjectdatabase transaction (knex)
lockenum
"UPDATE", "SHARE"
Mode row-locking untuk mendukung concurrent access
skipLockedbooleanMode SKIP LOCKED untuk bypass row yang telah dikunci (row-locked) oleh proses lainnya

Return

Promise<Object>

Example

mengambil data buku berdasarkan filter.

const result = await ctx.moco.tables.findOne({
table: "books",
filter: ctx.moco
.composeFilter()
.eq("publisher", "Moco Book Publishing")
.toString(),
});
console.log(result); // data books dengan id 27f7466b-e620-47da-b2b7-0b8d74015e1d

findById(args)

Method findById berfungsi untuk mendapatkan data berdasarkan id.

Args properties

nametypedescription
tablestringnama tabel
selectarray of stringmemilih kolom yang akan diminta (kosongkan untuk mengambil semua kolom)
idstring (uuid)id data yang akan diambil
includearraydaftar tabel relasi
databasestringID dari database yang akan digunakan (default adalah "main")
transactionobjectdatabase transaction (knex)
lockenum
"UPDATE", "SHARE"
Mode row-locking untuk mendukung concurrent access
skipLockedbooleanMode SKIP LOCKED untuk bypass row yang telah dikunci (row-locked) oleh proses lainnya

Return

Promise<Object>

Example

mengambil data buku berdasarkan id.

const result = await ctx.moco.tables.findById({
table: "books",
id: "27f7466b-e620-47da-b2b7-0b8d74015e1d",
});
console.log(result); // data books dengan id 27f7466b-e620-47da-b2b7-0b8d74015e1d

create(args)

Method create berfungsi untuk membuat data baru berdasarkan parameters yang dikirim.

Args properties

nametypedescription
tablestringnama tabel
dataany objectberisi data sesuai kolom tabel
transactionobjectdatabase transaction (knex)
eventbooleanjika bernilai true maka table event akan tertrigger
databasestringID dari database yang akan digunakan (default adalah "main")

Return

Promise<Object>

data yang berhasil dibuat.

Example

melakukan operasi insert data pada table "books" dengan data bersisi "name: 'new book'"

const response = await ctx.moco.tables.create({
table: "books",
data: { name: "new book" },
});
console.log(response); // object berisi data yang berhasil dimasukkan.

update(args)

Method update berfungsi untuk mengupdate data sesuai id.

Args properties

nametypedescription
tablestringnama tabel
idstring (uuid)id data yang akan di-update
dataany objectdata untuk menghupdate
transactionobjectdatabase transaction (knex)
eventbooleanjika bernilai true maka akan dilakukan propagasi table event
databasestringID dari database yang akan digunakan (default adalah "main")

Return

Promise<Object>

data yang berhasil update.

Example

melakukan operasi update pada table "books" berdasarkan id.

const result = await ctx.moco.tables.update({
table: "books",
id: "27f7466b-e620-47da-b2b7-0b8d74015e1d",
data: {
name: "updated book",
},
});
console.log(result); // data books yang sukses di-update.

destroy(args)

Method destroy berfungsi untuk menghapus data sesuai id.

Args properties

nametypedescription
tablestringnama tabel
idstring (uuid)id data yang akan dihapus
transactionobjectdatabase transaction (knex)
eventbooleanjika bernilai true maka akan dilakukan propagasi table event
databasestringID dari database yang akan digunakan (default adalah "main")

Return

Promise<string>

id data yang berhasil hapus.

Example

menghapus data berdasarkan id.

const result = await ctx.moco.tables.destroy({
table: "books",
id: "27f7466b-e620-47da-b2b7-0b8d74015e1d",
});
console.log(result); // id data yang telah dihapus.

createTransaction(db,isolation)

Method createTransaction berfungsi untuk membuat transaction object. Argumen bersifat opsional.

Arguments

nametypedescription
dbstringID dari database yang akan digunakan (default adalah "main")
isolationenum
"READ_COMMITED", "REPEATABLE_READ", "SERIALIZABLE"
Level isolasi transaksi (default PgSQL adalah READ_COMMITED)

Return

Promise<Object>

transaction object.

Example

membuat transaction object, melakukan commit dan rollback

let transaction;
try {
transaction = await ctx.moco.tables.createTransaction();
// kode yg menggunakan transaction object
await transaction.commit();
} catch (error) {
await transaction.rollback();
}