Clojure dünyasında SQL tabanlı veritabanı erişimini yenilikçi bir yaklaşımla ele alan Bisql, yeni versiyonu 0.4.0 ile veri doğrulama süreçlerini daha da güçlendiriyor. Geliştirici hatappo tarafından oluşturulan bu açık kaynaklı kütüphane, SQL-first geliştirme anlayışını korurken otomatik CRUD sorguları üretme özelliğiyle dikkat çekiyor. Yeni sürümde eklenen Malli entegrasyonu ise veri tutarlılığını artırarak hem hata oranlarını düşürüyor hem de geliştirme sürecini hızlandırıyor.
Veritabanı erişim katmanlarının bakımı genellikle zorlu bir süreç olabiliyor. Geleneksel SQL şablon kütüphaneleri, tüm sorguları elle yazmayı gerektirirken, bazı kütüphaneler karmaşıklığı azaltmak için sorguları dinamik olarak oluşturma seçeneği sunuyor. Ancak bu yaklaşım zamanla tutarsızlıklara neden olabiliyor. Bisql ise farklı bir yol izliyor: tüm veritabanı erişimleri doğrudan SQL olarak yazılmalı. Bu sayede hem geliştiricilerin kodları okunaklı kalıyor hem de performans optimizasyonları kolaylaşıyor.
Bisql'ın bu yaklaşımı, CRUD işlemlerini elle yazma zahmetini de ortadan kaldırıyor. Kütüphane, bağlı olduğu veritabanının şemasını inceleyerek otomatik olarak standart CRUD sorgularını üretebiliyor. İndeks uyumlu sorgular da otomatik olarak oluşturulabiliyor. defquery makrosu ise bu SQL şablonlarını Clojure fonksiyonlarına dönüştürerek geliştiricilerin doğrudan kullanılabilir fonksiyonlara sahip olmasını sağlıyor.
Malli Doğrulama: Veri Tutarlılığını Artıran Otomatik Kontrol
Bisql 0.4.0'ın en önemli yeniliklerinden biri, Malli adlı veri doğrulama kütüphanesiyle entegrasyonu. Bu entegrasyon sayesinde geliştiriciler, sorgular için otomatik olarak veri doğrulama kuralları tanımlayabiliyor. Örneğin, bir kullanıcı sorgusu için giriş parametreleri ve dönüş verileri için doğrulama kuralları belirlenebiliyor.
Bu doğrulama süreci, sorgunun çalıştırılması sırasında otomatik olarak gerçekleşiyor ve gerekirse yapılandırılabiliyor. Bisql ayrıca her tablo için otomatik olarak bir temel Malli şema dosyası da üretiyor. Böylece geliştiriciler, bu şemaları sorgularında doğrudan kullanabiliyor ve veri bütünlüğünü sağlamış oluyor.
Örneğin, aşağıdaki gibi bir SQL şablonu oluşturulabiliyor:
/*:name crud.get-by-id */ /*:cardinality :one */ /*:malli/in [:map {:closed true} [:id int?]] */ /*:malli/out [:maybe sql.postgresql.public.users.schema/row] */
SELECT * FROM users WHERE id = /*$id*/1Bu şablon, kullanıcının kimlik numarasına göre bir kullanıcıyı getiren sorguyu temsil ediyor. malli/in ve malli/out bölümleri ise giriş parametreleri ve dönüş verisi için tanımlanan doğrulama kurallarını içeriyor.
Aynı şekilde, otomatik olarak üretilen Malli şema dosyası da şu şekilde oluyor:
(ns sql.postgresql.public.users.schema
(:refer-clojure :exclude [update])
(:require [bisql.schema :as bisql.schema]))
#_{:clojure-lsp/ignore [:clojure-lsp/unused-public-var]}
(def insert [:map {:closed true}
[:id [:or int? bisql.schema/malli-default-sentinel]]
[:email string?]
[:display-name string?]
[:status [:or string? bisql.schema/malli-default-sentinel]]
[:created-at [:or [:fn bisql.schema/offset-date-time?] bisql.schema/malli-default-sentinel]]])
#_{:clojure-lisp/ignore [:clojure-lsp/unused-public-var]}
(def update (bisql.schema/malli-map-all-entries-optional insert))
#_{:clojure-lisp/ignore [:clojure-lsp/unused-public-var]}
(def row (bisql.schema/malli-map-all-entries-strip-default-sentinel insert))Bu şema dosyası, insert, update ve row gibi temel CRUD işlemleri için otomatik olarak üretilen doğrulama kurallarını içeriyor. Geliştiriciler, bu şemaları sorgularında doğrudan kullanabiliyor ve veri tutarlılığını otomatik olarak sağlayabiliyor.
SQL Şablonlarında Koşullu İfadeler İçin Yeni Bir Sözdizimi
Bisql 0.4.0, SQL şablonları içinde koşullu ifadelerin yazımını kolaylaştıran yeni bir if ifade dili de sunuyor. Bu özellik sayesinde geliştiriciler, sorgularında dinamik olarak değişen koşulları daha ifade edici bir şekilde tanımlayabiliyor. Böylece sorguların okunabilirliği artarken, ek bir sorgulama katmanına ihtiyaç duyulmuyor.
Gelecekte Neler Bekleniyor?
Bisql, açık kaynaklı bir proje olarak sürekli gelişmeye devam ediyor. Gelecek sürümlerde, daha fazla veritabanı sistemine destek eklemeyi ve geliştiricilerin veritabanı erişim katmanını daha da optimize etmelerine yardımcı olacak yeni özellikler sunmayı planlıyor. Bu yenilikler sayesinde Clojure geliştiricileri, veritabanı işlemlerini daha güvenilir ve verimli bir şekilde gerçekleştirebilecek.
Yapay zeka özeti
Bisql 0.4.0 now supports Malli schema validation for Clojure SQL templates, automating CRUD query generation while ensuring type safety. Discover how to streamline database access.