Datagen

Project ini dibuat untuk generate data dummy berdasarkan SQL Query secara otomatis. Berbeda dengan generic data generator, tools ini akan membaca logic dari SQL Query untuk membentuk data yang dibutuhkan.
Contoh sederhana, jika kita ingin membuat data untuk dua table yang memenuhi query join berikut
SELECT * FROM TableA a
JOIN TableB b on a.pk_id = b.fk_tablea_id
Maka, kita perlu membuat data di TableA dengan pk_id yang sama dengan fk_tablea_id di TableB. Tools ini akan membaca logic tersebut, lalu membuat query insert sebagai outputnya.
Tech Stack

C# saya pilih karena ekosistemnya. Saat ini saya ingin tools ini berjalan untuk MSSQL. Karena keduanya sama-sama buatan Microsoft, saya bisa memanfaatkan integrasi yang lebih matang dan mengurangi banyak workaround manual.
Python digunakan untuk unit testing.
TSQL digunakan untuk pengujian query dan stored procedure.
Dockerfile digunakan untuk testing output dari tools dengan melakukan insert data langsung ke MSSQL yang berjalan di dalam Docker.
Shell digunakan untuk wrapping tools agar lebih mudah digunakan melalui CLI.
Why I Built This
Di aplikasi yang heavy query dan penuh stored procedure, proses membuat dummy data untuk testing bisa jauh lebih lama dibanding testing-nya sendiri.
Sebelum bisa testing, harus:
→ Baca logic di dalam store procedure
→ Cari tau table mana yang perlu diisi
→ Bikin dummy data yang valid (FK, constraint, dll)
Ribet. Dan lambat.
Project ini dibuat untuk generate data dummy berdasarkan SQL Query secara otomatis.
How It Works
Secara sederhana, tools ini melakukan:
- Parsing SQL Query
- Membaca relasi antar table
- Mengidentifikasi dependency data
- Membentuk insert order berdasarkan foreign key
- Generate query insert secara otomatis
What I Learned
Proses pembuatan tools ini dibantu dengan AI, jadi saya lebih banyak belajar bagaimana menggunakan AI untuk membuat project. Beberapa yang saya pelajari
- Dokumen sangat penting, beberapa kali AI yang saya gunakan membaut fitur yang tidak saya inginkan atau membuat satu fitur lalu merusak fitur lainnya. Dokumen akan membantu AI untuk tetap align dengan project goal.
- Penggunaan token perlu diperhatikan karena sangat mempengaruhi cost dan limit penggunaan AI. Pertama kali menggunakan AI, saya langsung terkena limit di 3 jam awal pemakaian, untuk mengatasi ini saya menggunakan RTK untuk menghemat penggunaan token.
- Testing sangat penting. Project ini memiliki testing dari unit testing, integration hingga E2E dan semua manual review. Beberapa kali AI ‘nakal’ terkait hal ini, seperti melakukan workaround ketika testing gagal alih-alih fixing issue. Beberapa kali juga menghapus testing agar setelah melakukan perubahan, testing menjadi passed.
Demo

Status Development
Project ini masih on-progress karena masih banyak case yang masih belum dihandle dengan baik. Sejauh ini untuk simple query sudah dapat dihandle, tapi untuk case yang lebih complex terkadang masih generate data untuk table yang salah.
- MSSQL
- Automated SQL
- SQL Data