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
- Klausa SELECT: Setiap kolom pada baris baru dengan indentasi
- Klausa FROM: Nama tabel dengan indentasi yang tepat
- Klausa JOIN: Kondisi JOIN dengan indentasi yang sesuai
- Klausa WHERE: Kondisi dengan indentasi yang tepat
- GROUP BY: Kolom pengelompokan dengan indentasi
- ORDER BY: Kolom pengurutan dengan indentasi
Aturan Konversi Huruf
- Kata kunci: Ubah ke bentuk huruf yang ditentukan (upper/lower/preserve)
- Fungsi: Ubah nama fungsi ke bentuk huruf yang ditentukan
- Tipe data: Ubah nama tipe data ke bentuk huruf yang ditentukan
- Identifier: Pertahankan huruf asli untuk nama tabel/kolom
Aturan Pemisah Baris
- Klausa utama: Baris baru sebelum SELECT, FROM, WHERE, GROUP BY, ORDER BY
- Klausa JOIN: Baris baru sebelum setiap jenis JOIN
- Operator boolean: Baris baru sebelum AND/OR jika diaktifkan
- 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
- Sintaks SQL tidak valid: Query SQL yang tidak valid
- Konstruksi tidak didukung: Fitur SQL yang tidak didukung formatter
- Query besar: Query yang melebihi batas pemrosesan
- Keterbatasan browser: Batas penyimpanan lokal atau memori
Pemulihan Error
- Validasi sintaks: Pemeriksaan sintaks SQL dasar
- Graceful degradation: Pemformatan parsial untuk query kompleks
- Umpan balik pengguna: Pesan error dan saran yang jelas
- 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:
- Penyematan Iframe: Sematkan sebagai iframe
- Integrasi API: Gunakan fungsi pemformatan secara langsung
- Integrasi Komponen: Sertakan sebagai komponen Vue
Kustomisasi
- Dukungan tema: Tema terang dan gelap
- Dukungan bahasa: Opsi multibahasa
- Gaya kustom: Opsi kustomisasi CSS