| Crates.io | parsql-macros |
| lib.rs | parsql-macros |
| version | 0.5.0 |
| created_at | 2024-12-12 19:43:56.756444+00 |
| updated_at | 2025-08-01 05:19:35.540579+00 |
| description | Parsql için yardımcı makroları barındıran küfedir. |
| homepage | |
| repository | https://github.com/yazdostum-nettr/parsql |
| max_upload_size | |
| id | 1481563 |
| size | 59,314 |
Parsql için procedural makroları barındıran küfedir. Bu paket, SQL sorgu oluşturma ve parametre işleme için derive makrolarını içerir.
Queryable türetme özniteliği, tablo adı, where ifadesi, select ifadesi, group by, having, order by, limit ve offset ifadeleri için destek sağlar.limit ve offset öznitelikleri ile verimli sayfalama yapabilirsiniz.Insertable türetme özniteliği, tabloya özgü INSERT ifadeleri oluşturur.Updateable türetme özniteliği, tabloya özgü UPDATE ifadeleri oluşturur.Deletable türetme özniteliği, tabloya özgü DELETE ifadeleri oluşturur.SqlParams türetme özniteliği, yapının SQL parametreleri için kullanılmasını sağlar.UpdateParams türetme özniteliği, yapının UPDATE ifadeleri için kullanılmasını sağlar.FromRow türetme özniteliği, veritabanı satırlarının yapıya dönüştürülmesini sağlar.Updateable: UPDATE sorgularını oluştururInsertable: INSERT sorgularını oluştururQueryable: SELECT sorgularını oluştururDeletable: DELETE sorgularını oluştururSqlParams: Parametre işleme kodunu oluştururUpdateParams: UPDATE işlemleri için parametre işleme kodunu oluştururFromRow: Veritabanı satırlarını Rust yapılarına dönüştürmek için kod oluştururCargo.toml dosyanıza şu şekilde ekleyin:
[dependencies]
parsql-macros = "0.5.0"
parsql-macros, SQL Injection saldırılarına karşı güvenli bir şekilde tasarlanmıştır:
$1, ?, vb.) otomatik olarak oluşturulurQueryable Kullanımı#[derive(Queryable, FromRow, SqlParams, Debug)]
#[table("users")]
#[where_clause("id = $")]
pub struct GetUser {
pub id: i64,
pub name: String,
pub email: String,
}
// "SELECT id, name, email FROM users WHERE id = ?" sorgusu otomatik oluşturulur
// ve "id" parametresi güvenli bir şekilde yerleştirilir
Insertable Kullanımı#[derive(Insertable)]
#[table("users")]
pub struct InsertUser {
pub name: String,
pub email: String,
pub status: i32,
}
// "INSERT INTO users (name, email, status) VALUES (?, ?, ?)" sorgusu otomatik oluşturulur
// ve tüm alanlar güvenli bir şekilde parametre olarak eklenir
Updateable Kullanımı#[derive(Updateable, UpdateParams)]
#[table("users")]
#[update("name, email")]
#[where_clause("id = $")]
pub struct UpdateUser {
pub id: i64,
pub name: String,
pub email: String,
pub status: i32,
}
// "UPDATE users SET name = ?, email = ? WHERE id = ?" sorgusu otomatik oluşturulur
// ve değerler güvenli bir şekilde yerleştirilir
Deletable Kullanımı#[derive(Deletable, SqlParams)]
#[table("users")]
#[where_clause("id = $")]
pub struct DeleteUser {
pub id: i64,
}
// "DELETE FROM users WHERE id = ?" sorgusu otomatik oluşturulur
// ve "id" parametresi güvenli bir şekilde yerleştirilir
#[table("tablo_adi")] - Sorgunun çalışacağı tablo adını belirtir#[where_clause("koşul")] - WHERE koşulunu tanımlar ($ işareti parametre yerini gösterir)#[select("alan1, alan2")] - SELECT sorgusu için hangi alanların seçileceğini belirtir#[update("alan1, alan2")] - UPDATE sorgusu için hangi alanların güncelleneceğini belirtir#[join("LEFT JOIN tablo2 ON tablo1.id = tablo2.id")] - JOIN ifadelerini belirtir#[group_by("alan1")] - GROUP BY ifadesini belirtir#[order_by("alan1 DESC")] - ORDER BY ifadesini belirtir#[having("COUNT(*) > 5")] - HAVING ifadesini belirtir#[limit(10)] - Sorgu sonucunda döndürülecek maksimum kayıt sayısını belirtir#[offset(20)] - Sorgu sonucunun kaç kayıt atlanarak başlayacağını belirtir0.3.2 sürümünden itibaren, parsql-macros sayfalama (pagination) işlemleri için güçlü destek sunmaktadır:
#[limit(N)] - Her sayfada kaç kayıt görüntüleneceğini belirler#[offset(N)] - Kaçıncı kayıttan itibaren başlanacağını belirler// İlk sayfa için sorgu yapısı
#[derive(Debug, Queryable, SqlParams, FromRow)]
#[table("users")]
#[where_clause("state >= $")]
#[order_by("id ASC")]
#[limit(10)] // Her sayfada 10 kayıt
#[offset(0)] // İlk sayfa (0. indeks)
pub struct PageOne {
pub id: i32,
pub name: String,
pub email: String,
pub state: i16,
}
// İkinci sayfa için sorgu yapısı
#[derive(Debug, Queryable, SqlParams, FromRow)]
#[table("users")]
#[where_clause("state >= $")]
#[order_by("id ASC")]
#[limit(10)] // Her sayfada 10 kayıt
#[offset(10)] // İkinci sayfa (10. kayıttan başla)
pub struct PageTwo {
pub id: i32,
pub name: String,
pub email: String,
pub state: i16,
}
Her veritabanı için, uygun parametre işaretleme otomatik olarak yapılır:
? işareti kullanılır$1, $2, $3, ... şeklinde numaralandırılmış parametreler kullanılır