Rust library that provides derive macros for automatic CRUD operations and comprehensive audit trails for MySQL entities. Track who changed what, when, and why with actor, session, and change set metadata.
Go to file
Michael Netshipise b1052ac271 Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills
New features:
- UpdateExpr: Advanced updates with column arithmetic (Add, Sub, Mul, Div, Mod),
  CASE/WHEN conditionals, AddIf/SubIf, Coalesce, Greatest, Least, and raw SQL
- ConnProvider: Flexible borrowed/owned connection management
- lookup_table! and lookup_options! macros for type-safe lookup tables
- new_uuid() for time-ordered UUIDs with better database indexing
- MCP server (sqlx-record-expert) with documentation tools and resources
- Claude Code skills for all features

Improvements:
- Fixed Postgres/SQLite unsigned integer binding (cast to signed)
- Added From implementations for all integer types to Value
- Added param_count() to Filter for expression parameter counting
- Added bind_all_values() for proper expression binding order

All three database backends (MySQL, PostgreSQL, SQLite) build and work correctly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 16:21:14 +02:00
.claude/skills Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills 2026-01-28 16:21:14 +02:00
mcp Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills 2026-01-28 16:21:14 +02:00
scripts Import entity-changes project 2026-01-28 15:19:38 +02:00
sqlx-record-ctl Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills 2026-01-28 16:21:14 +02:00
sqlx-record-derive Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills 2026-01-28 16:21:14 +02:00
src Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills 2026-01-28 16:21:14 +02:00
.gitignore Import entity-changes project 2026-01-28 15:19:38 +02:00
CLAUDE.md Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills 2026-01-28 16:21:14 +02:00
Cargo.toml Release v0.2.0 with UpdateExpr, ConnProvider, MCP server, and skills 2026-01-28 16:21:14 +02:00
Makefile Import entity-changes project 2026-01-28 15:19:38 +02:00
README.md Rename to sqlx-record with multi-database support 2026-01-28 15:31:24 +02:00

README.md

sqlx-record

Entity CRUD and change tracking for SQL databases with SQLx.

A Rust library that provides derive macros for automatic CRUD operations and comprehensive audit trails for SQL entities. Track who changed what, when, and why with actor, session, and change set metadata.

Features

  • #[derive(Entity)] generates complete CRUD operations
  • Type-safe query building with composable filters
  • Change tracking with WHO, WHAT, WHEN, and WHERE metadata
  • Version fields for optimistic locking
  • Diff detection between model states
  • CLI tool for managing audit tables
  • Supports MySQL, PostgreSQL, and SQLite

Installation

Add to your Cargo.toml:

[dependencies]
sqlx-record = { version = "0.1", features = ["mysql", "derive"] }
# or for PostgreSQL:
# sqlx-record = { version = "0.1", features = ["postgres", "derive"] }
# or for SQLite:
# sqlx-record = { version = "0.1", features = ["sqlite", "derive"] }

Usage

use sqlx_record::prelude::*;
use sqlx::FromRow;

#[derive(Entity, FromRow)]
#[table_name = "users"]
struct User {
    #[primary_key]
    id: Uuid,
    name: String,
    email: String,
    #[version]
    version: u32,
}

// Insert
let id = user.insert(&pool).await?;

// Query with filters
let users = User::find(&pool, filters![("active", true)], None).await?;

// Update with diff tracking
let mut form = User::update_form().with_name("New Name".into());
let diff = form.db_diff(&id, &pool).await?;
user.update(&pool, form).await?;

License

MIT