iToverDose/Yazılım· 23 NISAN 2026 · 20:06

Bisql 0.4.0: Clojure Veritabanı Erişiminde Malli Doğrulama Desteği

Clojure geliştiricileri için tasarlanan Bisql 0.4.0, SQL sorgularını otomatik olarak üretirken veri doğrulamasını da kolaylaştırıyor. Malli entegrasyonu ile veri tutarlılığı artarken, geliştirme süreci hızlanıyor.

DEV Community2 dk okuma0 Yorumlar

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*/1

Bu ş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.

Yorumlar

00
YORUM BIRAK
ID #T9HO4A

0 / 1200 KARAKTER

İnsan doğrulaması

5 + 6 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.