2 releases
| 0.1.1 | Nov 28, 2025 |
|---|---|
| 0.1.0 | Nov 28, 2025 |
#2738 in Database interfaces
27KB
172 lines
SwordAI (sword-ai)
The core library of the SwordAI ecosystem.
Part of SwordAI โ an ecosystem of libraries and tools designed to bring both performance and productivity to backend development, AI systems, data engineering, and distributed systems in Rust.
This library provides batteries-included utilities built on Axum and SeaORM, letting you focus on business logic instead of boilerplate.
Features
- Server Setup: Pre-configured Axum server with tracing
- Database: SeaORM integration with PostgreSQL and connection pooling
- Migrations: Automatic database migration support via SeaORM
- Configuration: Environment-based configuration with sensible defaults
- Tracing: Built-in structured logging with
tracing
Roadmap
- ๐ค AI/ML integration primitives
- ๐จ Event-driven architecture (message queues, pub/sub)
- โ๏ธ Background jobs and workers
- ๐ gRPC support
- โ๏ธ Cloud storage integrations (S3, GCP Storage, Azure Blob)
- ๐ Observability and metrics
- ๐ Authentication and authorization primitives
- ๐ Distributed systems patterns
Installation
Add to your Cargo.toml:
[dependencies]
sword-ai = "0.1"
Quick Start
use sword_ai::{server::run_with_migrator, FrameworkContext};
use axum::{Router, routing::get};
// Your migrator (from sea-orm-migration)
struct Migrator;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
dotenvy::dotenv().ok();
sword_ai::tracing::init_tracing();
run_with_migrator::<Migrator, _>(build_router, true).await
}
fn build_router(ctx: &FrameworkContext) -> Router {
Router::new()
.route("/health", get(|| async { "OK" }))
.with_state(ctx.clone())
}
Configuration
The framework reads configuration from environment variables:
| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | Required |
APP_HOST |
Server bind host | 0.0.0.0 |
APP_PORT |
Server bind port | 3000 |
RUST_LOG |
Log level filter | info,sqlx=warn,sea_orm=info |
DB_MAX_CONNECTIONS |
Maximum database connections | 100 |
DB_MIN_CONNECTIONS |
Minimum database connections | 5 |
DB_CONNECT_TIMEOUT |
Connection timeout (seconds) | 8 |
DB_IDLE_TIMEOUT |
Idle connection timeout (seconds) | 600 |
DB_MAX_LIFETIME |
Max connection lifetime (seconds) | 1800 |
Modules
config- Application configuration from environment variablesdb- Database connection with SeaORMserver- Axum server setup and executiontracing- Structured logging initialization
CLI Tool
For quickly scaffolding new projects, download the Sword CLI from GitHub Releases:
sword new my-api
See the main repository for installation instructions.
License
MIT
Dependencies
~31โ48MB
~553K SLoC