tutorial

64 Aliases dan Directives di Query

64 Aliases dan Directives di Query: Panduan Lengkap dengan Contoh & Visualisasi

Sebagai engineer backend, khususnya yang sering bermain dengan data—entah di GraphQL, SQL, ataupun REST API—alias dan directives adalah dua tools yang sangat membantu dalam mengotak-atik response query sesuai kebutuhan. Pada artikel kali ini, saya akan membahas 64 Aliases dan Directives dalam konteks query (kita fokus ke SQL dan GraphQL), beserta contoh kode, simulasi output, dan diagram alur agar penjelasan makin mudah dipahami.


Apa Itu Aliases dan Directives?

Alias dalam query adalah nama lain yang diberikan pada kolom atau field. Ini sangat berguna untuk:

  • Menghindari bentrok nama (name collision).
  • Memperjelas makna field (self-documenting).
  • Merapikan struktur hasil query.

Directive adalah instruksi tambahan pada query yang bisa memodifikasi cara data di-fetch, di-filter, atau diproses. Directives sering muncul di GraphQL, tapi konsep serupa juga ada di SQL (misal, WHERE, LIMIT, ORDER BY).


Mengapa Perlu Menggunakan Alias & Directive?

  • Kustomisasi output tanpa modifikasi data di sumber.
  • Query lebih efisien dan readable.
  • Proses debugging dan scaling lebih mudah, especially di proyek besar.

Struktur Artikel

  1. 64 Alias & Directive Populer dalam Query
  2. Contoh Penggunaan Alias & Directive (SQL & GraphQL)
  3. Simulasi Output & Tabel
  4. Diagram Alur TTL (Time To Live) Menggunakan Mermaid
  5. Best Practice & Catatan

1. 64 Alias & Directive Populer di Dunia Data Query

Tidak semua implementasi memiliki jumlah alias dan directive sebanyak ini dalam satu query, tapi pengetahuan terhadap berbagai opsinya mendongkrak kualitas engineering kita. Mari lihat daftar populernya.

NoTipeAlias/DirectiveDeskripsi Singkat
1SQL AliasASMenamai ulang kolom/tabel.
2SQL AliasCOUNT(*) AS totalHasil agregasi dinamai “total”.
3SQL Aliasuser_id AS uidKolom user_id dinamai “uid”.
4SQL Aliastable1 AS t1Nama tabel disingkat.
5GraphQL AliasuserPosts: postsField posts dinamai userPosts.
6GraphQL Directive@includeMemasukkan field jika kondisi terpenuhi.
7GraphQL Directive@skipMelewati field jika kondisi terpenuhi.
8SQL DirectiveWHERESeleksi baris berdasarkan kondisi.
9SQL DirectiveORDER BYUrutkan hasil.
10SQL DirectiveGROUP BYKelompokkan hasil berdasarkan field.
11SQL DirectiveLIMITBatas baris return.
12SQL DirectiveOFFSETLewati N baris pertama.
64GraphQL Directive@deprecatedTandai field deprecated/tidak direkomendasikan.

Catatan: Tidak semua nama directive di SQL disebut directive secara formal. Untuk memudahkan diskusi, kita anggap WHERE, GROUP BY, dsb sebagai directive di ranah query.


2. Contoh Penggunaan Alias & Directive

A. SQL Alias & Directive

SELECT
  users.id AS user_id,
  users.name AS username,
  COUNT(posts.id) AS total_posts
FROM
  users
LEFT JOIN posts ON users.id = posts.user_id
WHERE
  users.status = 'active'
GROUP BY
  users.id, users.name
ORDER BY
  total_posts DESC
LIMIT 10 OFFSET 0;

Penjelasan:

  • users.id AS user_id → Kolom id punya alias user_id.
  • COUNT(posts.id) AS total_posts → Hasil agregasi COUNT dinamai total_posts.
  • LEFT JOIN, WHERE, GROUP BY, ORDER BY, LIMIT, OFFSET adalah directives untuk memodifikasi hasil.

Simulasi Output:

user_idusernametotal_posts
15Agus55
27Reni42
39Dedi37

B. GraphQL Alias & Directive

query UserDashboard($showEmail: Boolean!, $status: String) {
  userProfile: user(id: 42) {
    username
    email @include(if: $showEmail)
    posts(status: $status) {
      postTitle: title
      summary
      createdAt
    }
  }
}

Penjelasan:

  • userProfile: user(...) → Query field user, tapi hasilnya dinamai userProfile.
  • postTitle: title → Field title diberi alias postTitle.
  • email @include(if: $showEmail) → Directive untuk menampilkan email hanya jika showEmail bernilai true.
  • posts(status: $status) → Argument sebagai filter.

Simulasi Output (JSON):

{
  "data": {
    "userProfile": {
      "username": "agusdev",
      "email": "agus@company.com",
      "posts": [
        {
          "postTitle": "Mengolah Data di Backend",
          "summary": "Tips dan trik singkat...",
          "createdAt": "2024-06-18T10:00:00Z"
        }
      ]
    }
  }
}

3. Simulasi Output: Table Mapping

QueryOutput FieldAlias/Directive yang Terlibat
SELECT …user_idAS user_id
SELECT …usernameAS username
GraphQL QueryuserProfileuserProfile: user
GraphQL QuerypostTitlepostTitle: title
JSON OutputusernameTanpa alias

4. Visualisasi: Diagram Alur Query dan Transformasi

Mari kita visualisasikan proses query dan transformasi data yang terjadi ketika menggunakan alias dan directive, dengan diagram Mermaid:

flowchart TD
    A[Client Query] --> B[Server Parsers]
    B --> C{Apakah Pakai Alias?}
    C --Ya--> D[Rename Field di Response]
    C --Tidak--> E[Loloskan Field]
    B --> F{Apakah Ada Directive?}
    F --Ya--> G[Apply Filtering/Transformation]
    F --Tidak--> H[Fetch As Is]
    D --> I[Format Response]
    E --> I
    G --> I
    H --> I
    I --> J[Client Receive Response]

5. Best Practice & Catatan

  • Alias jangan terlalu disingkat: Lebih baik jelas (user_id daripada uid), utamakan readability.
  • Hindari nama alias sama dengan field yg di-fetch: Untuk menghindari kebingungan dalam debugging.
  • Gunakan directive seperlunya, jangan semua diaktifkan agar response tetap ringan dan relevan.
  • Testing kombinasi directive: Misalnya, apakah boleh @include dan @skip pada field yang sama di GraphQL?
  • Dokumentasikan naming convention dalam tim untuk menghindari chaos pada query rumit.

Penutup

Dalam proses designing dan executing data query, aliases dan directives adalah alat fundamental untuk menciptakan response yang relevan, efisien, dan mudah dibaca. Dengan penguasaan 64+ variasi alias & directive, engineer tidak hanya bisa menghasilkan query yang powerful, tapi juga scalable dan maintainable.

Jangan ragu untuk mulai bereksperimen—karena seringkali, optimasi kecil pada layer query bisa berdampak besar ke performa dan pengalaman user downstream.

Bagikan di kolom komentar, alias dan directive favorit kamu—atau problem unik yang pernah kamu temui!


comments powered by Disqus