Araçlar & Çeviriciler
Açık Kaynak

Easy-DB: Dinamik REST API & SQLite Otomasyon Kütüphanesi

RustAxumTokioRusqliteReqwestSerdeCargo

SQLite tablolarını anında güvenli bir REST API'ye dönüştüren ve kendi asenkron HTTP istemcisini (client) içinde barındıran, crates.io üzerinden dağıtılan sıfır-boilerplate Rust kütüphanesi.

Teknoloji Yığını

RustAxumTokioRusqliteReqwestSerdeCargo

Sistem Metrikleri

Ağır ORM'ler (örn. Diesel/SeaORM) yerine doğrudan raw query mapping kullanılarak bellek tahsisi (memory footprint) minimize edildi
Tokio'nun asenkron event-loop'u sayesinde thread bloklanması yaşamadan yüksek eşzamanlı (concurrent) HTTP isteği işleme kapasitesi
Veritabanının doğrudan disk üzerinde (embedded) çalışmasıyla elde edilen sıfır ağ gecikmeli (zero-network-latency) sorgu süreleri

Bunu Neden İnşa Ettim?

"Backend geliştirirken sürekli tekrarlayan CRUD endpoint'leri ve DTO boilerplate'leri yazmak ciddi bir zaman kaybı. Bu sürtünmeyi ortadan kaldırmak için, sadece tablo yapısını verip anında güvenli bir REST API ayağa kaldıran, üstelik kendi istemcisiyle (client) gelen tak-çalıştır bir kütüphane yazmak istedim. Hızlı prototipleme ve gömülü (embedded) sistemler için ideal bir çözüm."

Mimari & Kararlar

Kütüphane Axum ve Tokio mimarisi üzerinde koşuyor. Veritabanı state'i, asenkron handler'lar arasında güvenle paylaşılabilmesi için `Arc<Mutex<Connection>>` ile sarmalandı. Sunucu motoru (`EasyDB`), tanımlanan tablolar üzerinde döngüye girerek Axum router'ına dinamik olarak endpoint'ler enjekte eder. Ağ I/O işlemleri asenkron çalışırken, SQLite'ın doğası gereği senkron olan disk okuma/yazma operasyonları thread-safe bir lock mekanizması ile yönetilir. Eşzamanlı olarak, kütüphane ile entegre gelen `EasyClient`, `reqwest` altyapısını kullanarak doğrudan bu API'yi tüketecek şekilde yapılandırılmıştır.

Temel Özellikler

  • 01.Dinamik endpoint enjeksiyonu ile sıfır-boilerplate (zero-boilerplate) REST API üretimi
  • 02.Derlenmiş paket içinde gelen ve API'yi doğrudan tüketebilen asenkron `EasyClient` modülü
  • 03.Tablo ve kolon isimleri üzerinden yapılabilecek Identifier Injection saldırılarına karşı katı sanitization katmanı
  • 04.SQL Injection riskini tamamen ortadan kaldıran dinamik parameterized query (hazırlanmış ifade) altyapısı
  • 05.URL parametreleri üzerinden (`?_sort=age&_order=desc`) çalışan otonom filtreleme ve sıralama motoru
Bu kütüphanenin altındaki en kritik mühendislik kararı, dinamik SQL üretimini güvenli hale getirmekti. Geleneksel parametre bağlama (prepared statements) yöntemleri, tablo veya kolon isimlerine yapılan müdahalelere (identifier injection) karşı koruma sağlamaz. Bu yüzden, dışarıdan gelen key'leri SQL string'ine katmadan önce `is_valid_identifier` fonksiyonuyla katı bir ASCII/Alfanümerik filtreden geçiren özel bir güvenlik duvarı kurdum. Crates.io'da yayınlanmış olması, bu aracı herhangi bir Rust projesine anında eklenebilir, production-ready bir mikro mimari bileşeni haline getiriyor.