kitx 0.0.6

A lightweight wrapper for database operations based on sqlx, enabling fast CRUD operations.
Documentation
# KitX - Lightweight SQL Builder for Rust


A minimalistic SQL builder library based on [sqlx](https://crates.io/crates/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]https://crates.io/crates/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

```toml
# 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

```rust
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

```rust
// 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

```rust
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