w

Referensi API

Dokumen ini menyediakan detail teknis tentang fungsi dan implementasi alat SQL Prettify.

Konfigurasi Alat

Opsi Pemformatan

Alat ini menerima opsi konfigurasi berikut:

interface FormattingOptions {
  indentSize: number; // 2, 4, or 8 spaces
  keywordCase: "upper" | "lower" | "preserve";
  uppercaseKeywords: boolean;
  uppercaseFunctions: boolean;
  uppercaseDataTypes: boolean;
  alignCommas: boolean;
  breakBeforeBooleanOperator: boolean;
}

Konfigurasi Default

const defaultOptions: FormattingOptions = {
  indentSize: 2,
  keywordCase: "upper",
  uppercaseKeywords: true,
  uppercaseFunctions: true,
  uppercaseDataTypes: true,
  alignCommas: false,
  breakBeforeBooleanOperator: true,
};

Kata Kunci SQL yang Didukung

Data Manipulation Language (DML)

  • SELECT: Mengambil data dari tabel
  • INSERT: Menyisipkan record baru
  • UPDATE: Mengubah record yang sudah ada
  • DELETE: Menghapus record

Data Definition Language (DDL)

  • CREATE: Membuat objek database
  • ALTER: Mengubah objek database
  • DROP: Menghapus objek database
  • TRUNCATE: Menghapus semua record dari tabel

Data Control Language (DCL)

  • GRANT: Memberikan izin
  • REVOKE: Mencabut izin

Kontrol Transaksi

  • COMMIT: Menyimpan perubahan transaksi
  • ROLLBACK: Membatalkan perubahan transaksi
  • SAVEPOINT: Membuat titik simpan

Fungsi SQL yang Didukung

Fungsi Agregat

  • COUNT: Menghitung baris atau nilai non-null
  • SUM: Menghitung jumlah nilai
  • AVG: Menghitung nilai rata-rata
  • MIN: Menemukan nilai minimum
  • MAX: Menemukan nilai maksimum

Fungsi String

  • UPPER: Mengubah menjadi huruf besar
  • LOWER: Mengubah menjadi huruf kecil
  • LENGTH: Mendapatkan panjang string
  • SUBSTRING: Mengekstrak substring
  • CONCAT: Menggabungkan string
  • TRIM: Menghapus spasi di awal/akhir

Fungsi Tanggal/Waktu

  • NOW: Mendapatkan cap waktu saat ini
  • DATE: Mengekstrak bagian tanggal
  • TIME: Mengekstrak bagian waktu
  • YEAR: Mengekstrak tahun
  • MONTH: Mengekstrak bulan
  • DAY: Mengekstrak hari

Fungsi Matematika

  • ROUND: Membulatkan ke jumlah desimal tertentu
  • FLOOR: Membulatkan ke bawah
  • CEIL: Membulatkan ke atas
  • ABS: Mendapatkan nilai absolut
  • SQRT: Menghitung akar kuadrat
  • POWER: Memangkatkan nilai

Tipe Data yang Didukung

Tipe Numerik

  • INT: Nilai bilangan bulat
  • INTEGER: Nilai bilangan bulat
  • BIGINT: Nilai bilangan bulat besar
  • SMALLINT: Nilai bilangan bulat kecil
  • TINYINT: Nilai bilangan bulat sangat kecil
  • DECIMAL: Desimal titik tetap
  • NUMERIC: Desimal titik tetap
  • FLOAT: Angka pecahan
  • DOUBLE: Angka pecahan presisi ganda
  • REAL: Angka pecahan presisi tunggal

Tipe String

  • CHAR: String dengan panjang tetap
  • VARCHAR: String dengan panjang variabel
  • TEXT: Data teks besar
  • BLOB: Objek biner besar

Tipe Tanggal/Waktu

  • DATE: Nilai tanggal
  • TIME: Nilai waktu
  • DATETIME: Nilai tanggal dan waktu
  • TIMESTAMP: Nilai cap waktu

Tipe Lainnya

  • BOOLEAN: Nilai boolean
  • BIT: Nilai bit
  • JSON: Data JSON

Aturan Pemformatan

Aturan Indentasi

  1. Klausa SELECT: Setiap kolom pada baris baru dengan indentasi
  2. Klausa FROM: Nama tabel dengan indentasi yang tepat
  3. Klausa JOIN: Kondisi JOIN dengan indentasi yang sesuai
  4. Klausa WHERE: Kondisi dengan indentasi yang tepat
  5. GROUP BY: Kolom pengelompokan dengan indentasi
  6. ORDER BY: Kolom pengurutan dengan indentasi

Aturan Konversi Huruf

  1. Kata kunci: Ubah ke bentuk huruf yang ditentukan (upper/lower/preserve)
  2. Fungsi: Ubah nama fungsi ke bentuk huruf yang ditentukan
  3. Tipe data: Ubah nama tipe data ke bentuk huruf yang ditentukan
  4. Identifier: Pertahankan huruf asli untuk nama tabel/kolom

Aturan Pemisah Baris

  1. Klausa utama: Baris baru sebelum SELECT, FROM, WHERE, GROUP BY, ORDER BY
  2. Klausa JOIN: Baris baru sebelum setiap jenis JOIN
  3. Operator boolean: Baris baru sebelum AND/OR jika diaktifkan
  4. Penyelarasan koma: Sejajarkan koma dalam daftar SELECT jika diaktifkan

Manajemen Riwayat

Struktur Record Riwayat

interface HistoryRecord {
  id: string;
  input: string;
  output: string;
  options: FormattingOptions;
  timestamp: number;
}

Operasi Riwayat

  • Tambah Record: Secara otomatis menambahkan record pemformatan baru
  • Hapus Record: Menghapus entri riwayat tertentu
  • Bersihkan Riwayat: Menghapus semua record riwayat
  • Muat Record: Memulihkan SQL dan opsi dari riwayat

Batas Penyimpanan

  • Maksimum Record: 50 record riwayat
  • Lokasi Penyimpanan: Penyimpanan lokal browser
  • Persistensi: Data tetap tersimpan antar sesi browser

Penanganan Error

Error Umum

  1. Sintaks SQL tidak valid: Query SQL yang tidak valid
  2. Konstruksi tidak didukung: Fitur SQL yang tidak didukung formatter
  3. Query besar: Query yang melebihi batas pemrosesan
  4. Keterbatasan browser: Batas penyimpanan lokal atau memori

Pemulihan Error

  1. Validasi sintaks: Pemeriksaan sintaks SQL dasar
  2. Graceful degradation: Pemformatan parsial untuk query kompleks
  3. Umpan balik pengguna: Pesan error dan saran yang jelas
  4. Opsi cadangan: Pendekatan pemformatan alternatif

Pertimbangan Kinerja

Batas Pemrosesan

  • Ukuran query: Menangani query hingga 10.000 karakter
  • Kompleksitas: Mendukung query bersarang hingga 10 level
  • Waktu pemrosesan: Biasanya memproses query dalam waktu kurang dari 100 ms

Fitur Optimasi

  • Pemrosesan inkremental: Hanya memproses bagian yang berubah
  • Caching: Menyimpan hasil pemformatan untuk operasi berulang
  • Lazy loading: Memuat record riwayat saat diperlukan

Kompatibilitas Browser

Browser yang Didukung

  • Chrome: Versi 80+
  • Firefox: Versi 75+
  • Safari: Versi 13+
  • Edge: Versi 80+

Fitur yang Dibutuhkan

  • Dukungan ES6: Arrow function, template literal
  • Local Storage: API penyimpanan lokal browser
  • Clipboard API: Akses clipboard modern
  • CSS Grid: Dukungan tata letak

Integrasi

Opsi Penyematan

Alat ini dapat diintegrasikan ke aplikasi lain:

  1. Penyematan Iframe: Sematkan sebagai iframe
  2. Integrasi API: Gunakan fungsi pemformatan secara langsung
  3. Integrasi Komponen: Sertakan sebagai komponen Vue

Kustomisasi

  • Dukungan tema: Tema terang dan gelap
  • Dukungan bahasa: Opsi multibahasa
  • Gaya kustom: Opsi kustomisasi CSS
Apakah halaman ini membantu?