Parrot , sebuah library baru untuk bahasa pemrograman Gleam , telah mendapat pengakuan sebagai proyek komunitas resmi di situs web sqlc . Perkembangan ini menandai pencapaian penting bagi para developer yang mencari interaksi database type-safe dalam aplikasi Gleam .
Gleam adalah bahasa pemrograman fungsional yang diketik secara statis dan berjalan di Erlang Virtual Machine serta dapat dikompilasi ke JavaScript . Bahasa ini menawarkan type safety yang kuat sambil mempertahankan karakteristik fault-tolerance dari ekosistem BEAM . Parrot memanfaatkan sqlc , sebuah tool populer untuk generasi kode SQL , untuk membawa validasi query SQL pada waktu kompilasi ke proyek Gleam .
Antusiasme Komunitas terhadap Pendekatan Gaya sqlc
Komunitas developer menunjukkan dukungan kuat terhadap metodologi sqlc yang diimplementasikan oleh Parrot . Banyak developer menghargai bagaimana pendekatan ini memungkinkan mereka menulis query SQL murni dalam file terpisah sambil mempertahankan type safety penuh. Hal ini berbeda dengan solusi Object-Relational Mapping (ORM) , yang sering kesulitan menyamai ekspresivitas SQL dan dapat menimbulkan overhead performa.
Library ini secara otomatis menghasilkan fungsi Gleam dari query SQL , lengkap dengan nama parameter dan tipe return yang tepat. Sebagai contoh, sebuah query bernama FindUser dengan SELECT * FROM user WHERE username = $1 menjadi fungsi Gleam find_user(username: String) dengan parameter dan hasil yang diketik dengan tepat.
Fitur Utama:
- Dukungan multiple queries per file
- Desain yang agnostik terhadap database client
- Deteksi schema otomatis
- Named parameters dengan type inference
- Utility wrappers untuk library database Gleam yang populer
Dukungan Database dan Integrasi
Parrot mendukung tiga sistem database utama yang ditangani sqlc : PostgreSQL , MySQL , dan SQLite . Library ini menyertakan wrapper utilitas untuk library database Gleam populer seperti lpil/sqlight dan lpil/pog, membuat integrasi menjadi mudah untuk proyek yang sudah ada.
Satu keterbatasan yang perlu dicatat adalah bahwa Parrot hanya dapat dijalankan dalam aplikasi Gleam berbasis Erlang , meskipun kode yang dihasilkan bekerja di lingkungan JavaScript . Ini berarti proyek JavaScript memerlukan langkah build terpisah untuk menghasilkan modul kode yang diperlukan.
Database yang Didukung:
- SQLite (memerlukan sqlite3 yang terinstal)
- PostgreSQL (memerlukan pg_dump yang terinstal)
- MySQL (memerlukan mysqldump yang terinstal)
Keterbatasan Teknis dan Pertimbangan
Diskusi komunitas telah menyoroti beberapa tantangan dengan pendekatan sqlc , terutama seputar query dinamis. Filtering dan ordering dinamis tetap bermasalah dari perspektif query planner database, karena prepared statement mungkin berperforma berbeda tergantung pada nilai parameter. PostgreSQL menangani hal ini lebih baik daripada SQLite dengan mengevaluasi apakah prepared statement memerlukan optimisasi khusus parameter.
SQL hampir tidak dapat diparametrisasi, jadi menurut pendapat saya, DX jauh lebih buruk daripada menggunakan query builder dan tidak jauh lebih baik daripada sekadar menggunakan string.
Library ini juga memiliki beberapa batasan teknis. Tipe data kompleks dibungkus sebagai tipe dynamic karena kompleksitas implementasi, dan fitur sqlc tertentu seperti struct embedding dan operasi batch belum didukung. Array multidimensional di PostgreSQL mungkin tidak teridentifikasi dengan benar karena keterbatasan pg_dump.
Instalasi dan Penggunaan:
Instal library
$ gleam add parrot
Generate kode dari DATABASE_URL
$ gleam run -m parrot
Gunakan environment variable khusus
$ gleam run -m parrot -- --PG_DATABASE_URL
Tentukan file SQLite
$ gleam run -m parrot -- --sqlite <file path>
Minat Ekosistem yang Berkembang
Rilis ini telah memicu diskusi yang lebih luas tentang pola akses database type-safe di berbagai bahasa pemrograman. Developer telah menyebutkan tool serupa seperti PgTyped untuk TypeScript dan Jooq untuk Java , menunjukkan minat industri yang berkembang terhadap pendekatan validasi SQL pada waktu kompilasi.
Parrot mewakili langkah maju yang penting bagi ekosistem Gleam , menyediakan developer dengan solusi yang robust untuk interaksi database sambil mempertahankan penekanan bahasa pada type safety dan reliabilitas. Seiring komunitas Gleam terus berkembang, tool seperti Parrot membantu menetapkan bahasa ini sebagai pilihan yang layak untuk membangun sistem yang scalable dan type-safe.
Referensi: Parrot / type-safe SQL in gleam
