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 aba05b2b52 Rename to sqlx-record with multi-database support
- Renamed project from entity-changes to sqlx-record
- Renamed derive crate from entity-update_derive to sqlx-record-derive
- Renamed CLI tool from entity-changes-ctl to sqlx-record-ctl
- Renamed Condition to Filter (condition.rs -> filter.rs)
- Renamed condition_or/condition_and/conditions macros to filter_or/filter_and/filters
- Added multi-database support via feature flags:
  - mysql: MySQL support
  - postgres: PostgreSQL support (with $1, $2 placeholders)
  - sqlite: SQLite support
- Updated query generation for database-specific syntax:
  - Placeholder styles (? vs $1)
  - Table quoting (` vs ")
  - COUNT expressions
  - ILIKE handling
  - Version increment (IF vs CASE WHEN)
- Updated CLI tool for all three databases
- Updated documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:31:24 +02:00
scripts Import entity-changes project 2026-01-28 15:19:38 +02:00
sqlx-record-ctl Rename to sqlx-record with multi-database support 2026-01-28 15:31:24 +02:00
sqlx-record-derive Rename to sqlx-record with multi-database support 2026-01-28 15:31:24 +02:00
src Rename to sqlx-record with multi-database support 2026-01-28 15:31:24 +02:00
.gitignore Import entity-changes project 2026-01-28 15:19:38 +02:00
CLAUDE.md Rename to sqlx-record with multi-database support 2026-01-28 15:31:24 +02:00
Cargo.toml Rename to sqlx-record with multi-database support 2026-01-28 15:31:24 +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