kitx 0.0.6

A lightweight wrapper for database operations based on sqlx, enabling fast CRUD operations.
Documentation
kitx-0.0.6 has been yanked.

KitX - Lightweight SQL Builder for Rust

A minimalistic SQL builder library based on sqlx, supporting SQLite and MySQL/MariaDB. Provides type-safe database operations with soft delete capabilities and global filters.

Features

Core Functionality

  • Type-Safe CRUD Operations
    insert_one, insert_many, update_one, update_many, delete_one, delete_many with transaction support

  • Advanced Queries
    fetch_all, fetch_by_key, fetch_one, fetch_paginated, fetch_by_cursor, exists, count

  • Soft Delete Management
    restore_one, restore_many with global configuration

  • Flexible Query Building
    Supports JOINs, CASE WHEN, aggregations, and custom SQL extensions

Key Advantages

  • 🚀 No ORM Overhead - Direct SQL interaction with builder pattern
  • 🔧 Field Access API - Uses field_access for type-safe column operations
  • 🌍 Global Filters - Apply tenant ID or soft delete filters across all queries
  • 📦 Extensible - Easily add custom operations and query modifiers

Quick Start

1. Add Dependency

# Default SQLite and MySQL support

kitx = "0.0.6"



# For SQLite only

kitx = { version = "0.0.6", default-features = false, features = ["sqlite"] }



# For MySQL/MariaDB only

kitx = { version = "0.0.6", default-features = false, features = ["mysql"] }

2. Basic Usage

use kitx::sqlite::{sql::QueryBuilder, sql::field, operations::Operations};

// SQL Builder Example
let query = QueryBuilder::select("users", &["id", "name"])
    .filter(field("age").eq(23))
    .filter(field("salary").gt(4500))
    .or(field("status").in_vec(vec!["active", "pending"]))
    .order_by("created_at", false)
    .build().0;

// CRUD Operations
let op = Operations::new("articles", ("article_id", true));
let article = Article {
    id: 42,
    title: "Rust Best Practices".into(),
    content: "...".into(),
};

// Insert with transaction
op.insert_one(article, true).await?;

3. Global Configuration

// Soft delete configuration
set_global_soft_delete_field("deleted_at", vec!["audit_logs"]);

// Multi-tenant filtering
set_global_filter((
    field("tenant_id").eq(123), 
    vec!["system_metrics"]
));

Advanced Usage

Pagination Example

let results = op.fetch_paginated(
    10,            // page size
    2,             // page number
    QueryCondition // filter conditions
).await?;

Requirements

  • Rust 1.85.0
  • SQLite 3 or MySQL 5+
  • sqlx-cli for migrations

License

MIT License