Operasi pada Tabel

Operasi pada tabel pada dasarnya bisa dibagi menjadi 4 jenis operasi, yaitu:

  1. Query
  2. Create
  3. Update
  4. Delete

4 operasi di atas bisa dilakukan melalui beberapa cara, untuk lebih detailnya akan dijelaskan pada submenu berikut ini.

Query data

Mengambil data dari database sesuai dengan nama tabel yang dimasukkan.

Query semua data

Default

Contoh operasi di bawah ini akan mengambil semua data dari tabel book.

table = client.getTable("book");
const result = await table.read();
console.log(result);

Menggunakan fitur filter

Operasi di bawah ini akan mengambil data pada tabel book dengan filter name: "book1".

table = client.getTable("book");
const result = await table
.filter(table.composeFilter().eq("name", "book1").build())
.read();
console.log(result);

Menggunakan fitur selected columns

Operasi di bawah ini akan mengambil data pada tabel book dengan kolom name dan author.

table = client.getTable("book");
const result = await table.fields("id", "name").read();
console.log(result);

Menggunakan fitur include relations

Operasi di bawah ini akan mengambil data pada tabel book dengan relasi order.

table = client.getTable("book");
const result = await table.include("order").read();
console.log(result);

Query Berdasarkan id

Contoh operasi di bawah ini akan mengambil data sesuai id.

table = client.getTable("book");
const result = await table.lookup("3a331285-9623-4478-beca-852ed6b56a1b");
console.log(result);

Create data

Berfungsi menambahkan data ke dalam database sesuai dengan nama tabel yang dimasukkan. Contoh operasi di bawah ini akan menambahkan data ke dalam tabel book.

table = client.getTable("book");
const result = await table.insert({
name: "book baru",
author: "author baru",
});
console.log(result);

Update data

Berfungsi untuk mengupdate data dalam database sesuai dengan tabel yang dimasukkan. Contoh operasi di bawah ini akan mengupdate data sesuai dengan data yang dikirim.

table = client.getTable("book");
const result = await table.update({
id: "19c7ec1f-41f4-46c7-beb1-29f652a9da2e",
data: {
name: "book baru",
author: "author baru",
},
});
console.log(result);

Delete data

Berfungsi untuk menghapus data dalam database sesuai dengan tabel dan id yang dimasukkan. Berikut adalah contoh operasi yang akan menghapus data berdasarkan id.

table = client.getTable("book");
await table.del({ id: "58895c90-1696-4cf4-925c-7b78bf0e77f8" });

Graphql endpoint

Pengembang bisa memanfaatkan endpoint /graphql untuk memlakukan operasi data menggunakan graphql. Selain itu, Pengembang juga dapat memanfaatkan endpoint /grapql/playground untuk berinteraksi dengan server graphql.

Untuk mengakses server graphql pengembang perlu menggunakan headers Authorization berisikan Bearer Token sama seperti mengakses endpoint table lainnya. setelah header Authorization valid maka dokumentasi query dan mutation akan bisa diakses.

Graphql Playground
image ta3a

Contoh penulisan query & mutation (Graphql Playground)

Query

{
allBooksList(limit:5) {
data {
id
name
created_at
}
}
}

Query di atas akan mendapatkan 5 buku teratas diurutkan berdasarkan created_at ASC. dengan kolom yang ditampilkan yaitu id, name, dan created_at.

Mutation

mutation {
createBooks(input: { name: "new book from graphql" })
{
id
name
created_at
}
}

Mutation di atas akan menambahkan buku dengan name "new book from graphql" dan mengembalikan data buku yang baru saja dibuat dengan kolom yang ditampilkan yaitu id, name, dan created_at.

Akses Graphql Melalui Client Sdk

Query Example

const query = {
query: `query($limit: Int, $sort: UsersSortEnum){
allUsersList(limit: $limit, sort: $sort){
data {
id
name
}
count
}
}`,
variables: {
limit: 10,
sort: "name",
},
};
await client.gql.query(query); // mengembalikan hasil query

Mutation Example

const mutation = {
mutation: `mutation($ids: [UUID!]!, $input: UsersUpdateInput!){
updateUsersById(ids: $ids , input: $input){
id
created_at
updated_at
roles
email
password
social_ids
verified
fcm_tokens
name
deactivated_at
country
address
}
}`,
variables: {
ids: "cd64140d-abef-4a88-9ec1-bf2e87e08455",
input: { name: "name-update" },
},
};
await client.gql.mutation(mutation); // mengembalikan hasil mutasi yang sukses