Releases: rapina-rs/rapina
v0.12.0
What's Changed
- Fix bash variable interpolation in release recipe by @arferreira in #438
- feat: gate rate limiting behind rate-limit feature flag by @josemoura212 in #441
- Update: bump github/codeql-action from 4.34.1 to 4.35.1 by @dependabot[bot] in #458
- Update: bump dtolnay/rust-toolchain from efa25f7f19611383d5b0ccf2d1c8914531636bf9 to 3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 by @dependabot[bot] in #459
- Update: bump rust_decimal from 1.40.0 to 1.41.0 by @dependabot[bot] in #462
- Update: bump hyper from 1.8.1 to 1.9.0 by @dependabot[bot] in #463
- Update: bump sea-orm from 1.1.19 to 1.1.20 by @dependabot[bot] in #460
- Update: bump sea-orm-migration from 1.1.19 to 1.1.20 by @dependabot[bot] in #461
- Update: bump inventory from 0.3.22 to 0.3.24 by @dependabot[bot] in #464
- Add missing extractor sections (CurrentUser, Paginate, Db) by @xingzihai in #436
- Add cronjob scheduler feature by @juv in #432
- Fix blog listing and add blog post template by @arferreira in #444
- Add Meet Juca blog post by @arferreira in #445
- docs: alpha release-notes by @richasdev in #467
- Update roadmap with latest completed and in-progress features by @CapThunder19 in #465
- docs: add v0.2.0 release notes by @richasdev in #468
- Add JWT validation based on Json Web Key Sets by @juv in #408
- docs: add release notes for v0.4.0 by @richasdev in #469
- feat: add Tower compatibility layer with bidirectional adapters by @josemoura212 in #457
- Update: bump actions/github-script from 8.0.0 to 9.0.0 by @dependabot[bot] in #481
- Update: bump fastrand from 2.3.0 to 2.4.1 by @dependabot[bot] in #482
- Update: bump redis from 1.1.0 to 1.2.0 by @dependabot[bot] in #483
- Update: bump matchit from 0.9.1 to 0.9.2 by @dependabot[bot] in #484
- Update: bump tokio from 1.50.0 to 1.51.1 by @dependabot[bot] in #485
- docs: add v0.5.0 release notes by @richasdev in #472
- Add unit tests for timeout and body_limit middleware handle methods by @Ismaellima4 in #470
- Ignore RUSTSEC-2026-0097 rand unsoundness advisory by @arferreira in #492
- Remove docs/ from Check version consistency in ci.yml by @ShiraiEd in #491
- Add --database subcommand to rapina new command by @Ismaellima4 in #473
- docs: add release notes for v0.6.0 by @richasdev in #474
- Fix README.md inconsistencies by @ShiraiEd in #489
- Bump rustls-webpki to 0.103.12 by @arferreira in #501
- docs: add release notes for v0.7.0 by @richasdev in #475
- docs: add v0.11.0 release notes by @richasdev in #486
- docs: add v0.8.0 release-notes by @richasdev in #477
- docs: add v0.9.0 release notes by @richasdev in #478
- docs: add v0.10.0 release-notes by @richasdev in #479
- feature/state arc builder by @richasdev in #497
- Update: Bump softprops/action-gh-release from 2.6.1 to 3.0.0 by @dependabot[bot] in #504
- Update: Bump EmbarkStudios/cargo-deny-action from 2.0.15 to 2.0.17 by @dependabot[bot] in #505
- Update: Bump actions/upload-artifact from 7.0.0 to 7.0.1 by @dependabot[bot] in #506
- Update: Bump actions/cache from 5.0.4 to 5.0.5 by @dependabot[bot] in #507
- Update: Bump github/codeql-action from 4.35.1 to 4.35.2 by @dependabot[bot] in #508
- Feat: add enable/disable wrappers methods by @ShiraiEd in #498
- feat: implement tab-based navigation for roadmap sections by @CapThunder19 in #488
- Add AppConfig state and use it in the example handler by @apetrovic6 in #503
- fix: re-export validator crate at root for derive compatibility by @richasdev in #512
- feat(uuid): enable serde feature for Uuid serialization by @richasdev in #513
- Add feature gate for metrics builder methods by @juv in #515
- Fix in-flight request metric leak by @juv in #517
- feat: emit sensible defaults and timestamp columns for add resource by @richasdev in #499
- Bump rustls-webpki to 0.103.13 by @ShiraiEd in #526
- feat(url-shortener): use State in create handler by @mvanhorn in #510
- fix/migrate command execution by @richasdev in #524
- Update: Bump rand from 0.8.5 to 0.8.6 by @dependabot[bot] in #527
- Update: Bump actions/upload-pages-artifact from 4.0.0 to 5.0.0 by @dependabot[bot] in #529
- Update: Bump hyper-rustls from 0.27.7 to 0.27.9 by @dependabot[bot] in #530
- Update: Bump clap from 4.6.0 to 4.6.1 by @dependabot[bot] in #531
- Update: Bump uuid from 1.23.0 to 1.23.1 by @dependabot[bot] in #532
- Update: Bump tokio from 1.51.1 to 1.52.1 by @dependabot[bot] in #533
- feat: add llms.txt endpoint and CLI export command by @richasdev in #528
- Support streaming and SSE responses by @arferreira in #536
- Add cursor-based pagination by @arferreira in #540
- Refactor/unified type system and expanded types by @Ismaellima4 in #519
- Update: Bump actions/labeler from 6.0.1 to 6.1.0 by @dependabot[bot] in #550
- Update: Bump github/codeql-action from 4.35.2 to 4.35.4 by @dependabot[bot] in #551
- Update: Bump rust_decimal from 1.41.0 to 1.42.0 by @dependabot[bot] in #552
- feat: ship version-matched bundled docs and AGENTS.md for AI agents by @ShiraiEd in #535
- Updated tokio and hyper tungstenite by @ShiraiEd in #560
- Update: Bump pin-project-lite from 0.2.16 to 0.2.17 by @dependabot[bot] in #554
- Update: Bump redis from 1.2.0 to 1.2.1 by @dependabot[bot] in #555
- Update: Bump tokio from 1.52.1 to 1.52.3 by @dependabot[bot] in #556
- [Feature]: Opt-in auto-migrations at startup + Django-style pending warning when disabled by @chiucchi in #547
- Invalidate all ancestor collection prefixes on mutation by @richasdev in #537
- Add custom Prometheus collector support via add_metric() by @richasdev in #538
- fix: skip write in generate_rapina_docs when content unchanged by @richasdev in #564
- fix(macros): reject unsigned integer types in schema fields (closes #549) by @mvanhorn in #557
- Update: Bump jsonwebtoken from 10.3.0 to 10.4.0 by @dependabot[bot] in #569
- feat: add Header typed header extractor by @richasdev in #542
- fix: consolidate PK source of truth in codegen by @richasdev in #546
- Release v0.12.0 by @arferreira in #574
New Contributors
- @josemoura212 made their first contribution in #441
- @xingzihai made their first contribution in #436
- @CapThunder19 made their first contribution in #465
- @apetrovic6 made their first contribution in #503
- @mvanhorn made their first contribution in #510
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's Changed
- Fix documentation links in README by @tjweir in #308
- Replace windows crate for smaller windows-sys by @juv in #307
- Add new check into rapina doctor command by @chiucchi in #315
- Add pluralized fn logic and tests by @ShiraiEd in #313
- Use Option for nullable columns by @uemuradevexe in #317
- Add static route map for O(1) parameterless route lookup by @arferreira in #316
- Add radix trie for O(path_depth) dynamic route matching by @arferreira in #318
- Create a good first issue template by @uemuradevexe in #309
- Add a validation example by @uemuradevexe in #319
- Add #[patch] proc-macro and Router::patch() shorthand by @uemuradevexe in #331
- Update: Bump clap from 4.5.60 to 4.6.0 by @dependabot[bot] in #342
- Update: Bump toml from 1.0.3+spec-1.1.0 to 1.0.6+spec-1.1.0 by @dependabot[bot] in #343
- Update: Bump redis from 0.27.6 to 1.0.5 by @dependabot[bot] in #344
- Add criterion benchmarks for router resolution by @arferreira in #320
- Replace PathParams HashMap with SmallVec-backed struct by @arferreira in #321
- Add put_named and delete_named methods by @uemuradevexe in #345
- Support UUID primary keys in schema! macro by @Ismaellima4 in #314
- Add feature flag for compression by @juv in #333
- Use RFC7807 Problem Details for error responses by @Ismaellima4 in #347
- Wrap State extractor in Arc to remove Clone bound by @lucaserm in #348
- Replace string-based extractor classification with positional convention by @lucaserm in #349
- Add unit tests for CORS middleware by @lucaserm in #350
- Add --force flag to
import databasefor re-importing by @lucaserm in #351 - Document NaiveDateTime type and clarify DateTime timezone awareness in docs by @lucaserm in #354
- Add unit tests for doctor diagnostic functions by @lucaserm in #355
- Add middleware example demonstrating built-in and custom middleware by @lucaserm in #356
- Document #[primary_key(...)] attribute in database docs by @lucaserm in #353
- Handle irregular plurals and uncountable words in codegen singularize/pluralize by @lucaserm in #357
- Add unit tests for test command pure functions by @lucaserm in #360
- Add configurable verbosity and header redaction to RequestLogMiddleware by @arferreira in #361
- add url-shortner example by @ShiraiEd in #364
- Add seed database support by @yan-pi in #330
- Adds inline comments in the undocumented structures in middleware/, s… by @ShiraiEd in #359
- Add --bless snapshot testing for API responses by @lucaserm in #362
- Enables multiple path parameters and updates the docs by @ShiraiEd in #358
- Bump to 0.10.0, update changelog and roadmap by @arferreira in #370
- Multipart file upload extractor by @Ismaellima4 in #363
- auto-wire mod declarations in main.rs after import/add resource by @uemuradevexe in #365
- feat: add built-in health check endpoints by @ShiraiEd in #366
- Add deployment guide covering Docker, reverse proxies, and producton config by @lucaserm in #367
- fix: use OpenAPI 3.0-compatible schema settings for serde_json::Value by @lucaserm in #374
- Add background jobs table and migration by @arferreira in #372
- Fix DTO codegen to use original crate types for JsonSchema compatibility by @lucaserm in #375
- perf: tfb hot path by @lucaserm in #380
- Update: Bump softprops/action-gh-release from 2.5.0 to 2.6.1 by @dependabot[bot] in #383
- Update: Bump actions/cache from 4.3.0 to 5.0.4 by @dependabot[bot] in #384
- Update: Bump github/codeql-action from 4.32.6 to 4.33.0 by @dependabot[bot] in #385
- Update: Bump uuid from 1.19.0 to 1.22.0 by @dependabot[bot] in #386
- Update: Bump futures-util from 0.3.31 to 0.3.32 by @dependabot[bot] in #387
- Update: Bump matchit from 0.8.6 to 0.9.1 by @dependabot[bot] in #388
- Update: Bump regex from 1.12.2 to 1.12.3 by @dependabot[bot] in #389
- Update: Bump tracing-subscriber from 0.3.22 to 0.3.23 by @dependabot[bot] in #390
- Update: Bump quote from 1.0.43 to 1.0.45 by @dependabot[bot] in #391
- Update: Bump rustls-webpki from 0.103.9 to 0.103.10 by @dependabot[bot] in #397
- feat: unify port env var to RAPINA_PORT and add .env scanning by @lucaserm in #373
- Add #[job] macro for background job handlers by @arferreira in #382
- Auto-generate OpenAPI requestBody from extractors by @sarpedondev in #396
- Add
rapina jobs listCLI command by @uemuradevexe in #394 - add quickstart tutorial for getting started section by @uemuradevexe in #398
- Fix set rust/schema type as option when nullable by @chiucchi in #407
- fix: correct routes URL in dev banner by @XiaoPengMei in #411
- Update: Bump actions/deploy-pages from 4.0.5 to 5.0.0 by @dependabot[bot] in #414
- Update: Bump github/codeql-action from 4.33.0 to 4.34.1 by @dependabot[bot] in #415
- Update: Bump clap from 4.5.54 to 4.6.0 by @dependabot[bot] in #416
- Update: Bump redis from 1.0.5 to 1.1.0 by @dependabot[bot] in #417
- Update: Bump uuid from 1.22.0 to 1.23.0 by @dependabot[bot] in #418
- add a second tutorial for seaorm in blogs by @uemuradevexe in #409
- Silence singularize dead code warnings by @Judel777 in #422
- Add host and port verification by @ShiraiEd in #406
- fix: update rapina version in docs by @Spartan09 in #429
- Add Jobs extractor with enqueue and enqueue_with by @arferreira in #413
- unit tests for routing system by @ShiraiEd in #428
- Implement RetryPolicy with exponential backoff by @ShiraiEd in #426
- add new worker.rs file, new jobs() app method, updates retry.rs mod.r… by @ShiraiEd in #431
- Update extractors.md by @juv in #434
- Bump version to 0.11.0 by @arferreira in #433
New Contributors
- @tjweir made their first contribution in #308
- @sarpedondev made their first contribution in #396
- @XiaoPengMei made their first contribution in #411
- @Judel777 made their first contribution in #422
- @Spartan09 made their first contribution in #429
Full Changelog: v0.9.0...v0.11.0
v0.10.0
What's Changed
- Fix documentation links in README by @tjweir in #308
- Replace windows crate for smaller windows-sys by @juv in #307
- Add new check into rapina doctor command by @chiucchi in #315
- Add pluralized fn logic and tests by @ShiraiEd in #313
- Use Option for nullable columns by @uemuradevexe in #317
- Add static route map for O(1) parameterless route lookup by @arferreira in #316
- Add radix trie for O(path_depth) dynamic route matching by @arferreira in #318
- Create a good first issue template by @uemuradevexe in #309
- Add a validation example by @uemuradevexe in #319
- Add #[patch] proc-macro and Router::patch() shorthand by @uemuradevexe in #331
- Update: Bump clap from 4.5.60 to 4.6.0 by @dependabot[bot] in #342
- Update: Bump toml from 1.0.3+spec-1.1.0 to 1.0.6+spec-1.1.0 by @dependabot[bot] in #343
- Update: Bump redis from 0.27.6 to 1.0.5 by @dependabot[bot] in #344
- Add criterion benchmarks for router resolution by @arferreira in #320
- Replace PathParams HashMap with SmallVec-backed struct by @arferreira in #321
- Add put_named and delete_named methods by @uemuradevexe in #345
- Support UUID primary keys in schema! macro by @Ismaellima4 in #314
- Add feature flag for compression by @juv in #333
- Use RFC7807 Problem Details for error responses by @Ismaellima4 in #347
- Wrap State extractor in Arc to remove Clone bound by @lucaserm in #348
- Replace string-based extractor classification with positional convention by @lucaserm in #349
- Add unit tests for CORS middleware by @lucaserm in #350
- Add --force flag to
import databasefor re-importing by @lucaserm in #351 - Document NaiveDateTime type and clarify DateTime timezone awareness in docs by @lucaserm in #354
- Add unit tests for doctor diagnostic functions by @lucaserm in #355
- Add middleware example demonstrating built-in and custom middleware by @lucaserm in #356
- Document #[primary_key(...)] attribute in database docs by @lucaserm in #353
- Handle irregular plurals and uncountable words in codegen singularize/pluralize by @lucaserm in #357
- Add unit tests for test command pure functions by @lucaserm in #360
- Add configurable verbosity and header redaction to RequestLogMiddleware by @arferreira in #361
- add url-shortner example by @ShiraiEd in #364
- Add seed database support by @yan-pi in #330
- Adds inline comments in the undocumented structures in middleware/, s… by @ShiraiEd in #359
- Add --bless snapshot testing for API responses by @lucaserm in #362
- Enables multiple path parameters and updates the docs by @ShiraiEd in #358
- Bump to 0.10.0, update changelog and roadmap by @arferreira in #370
New Contributors
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
- Add
rapina import openapicommand by @arferreira in #253 - Update repo references to rapina-rs org by @arferreira in #280
- Update: Bump github/codeql-action from 4.32.4 to 4.32.5 by @dependabot[bot] in #276
- Update: Bump nix from 0.30.1 to 0.31.2 by @dependabot[bot] in #277
- Fix/openapi check should respect server port by @Ismaellima4 in #275
- Switch server to auto::Builder for HTTP upgrade support by @arferreira in #281
- Add OpenAPI documentation page by @arferreira in #287
- Add starter templates by @LevelUpExtreme in #238
- Add raw WebSocket support behind feature flag by @arferreira in #282
- Add Relay system for real-time push over WebSocket by @arferreira in #283
- Add validation documentation page by @arferreira in #288
- Add testing documentation page by @arferreira in #286
- Add group parameter to route macros for auto-discovery by @arferreira in #285
- Add channel handlers and presence tracking by @arferreira in #284
- Fix syntax highlighting on docs pages by @arferreira in #291
- update zola version in ci workflow by @ShiraiEd in #294
- Add interactive tutorial with 6 chapters by @arferreira in #301
- Update: Bump github/codeql-action from 4.32.5 to 4.32.6 by @dependabot[bot] in #296
- Update: Bump uuid from 1.21.0 to 1.22.0 by @dependabot[bot] in #297
- Update: Bump tokio from 1.49.0 to 1.50.0 by @dependabot[bot] in #298
- Update: Bump quote from 1.0.44 to 1.0.45 by @dependabot[bot] in #300
- Replace hardcoded content-type strings with typed constants by @uemuradevexe in #270
- Add weekly changelog template by @uemuradevexe in #303
- Add migration documentation page by @arferreira in #292
- Update docs to use Deref pattern by @arferreira in #293
- Add WebSocket and Relay documentation by @arferreira in #295
- add di docs by @ShiraiEd in #302
- Make graceful shutdown Windows-compatible by @juv in #304
Full Changelog: v0.8.0...v0.9.0
What's Changed
- Add
rapina import openapicommand by @arferreira in #253 - Update repo references to rapina-rs org by @arferreira in #280
- Update: Bump github/codeql-action from 4.32.4 to 4.32.5 by @dependabot[bot] in #276
- Update: Bump nix from 0.30.1 to 0.31.2 by @dependabot[bot] in #277
- Fix/openapi check should respect server port by @Ismaellima4 in #275
- Switch server to auto::Builder for HTTP upgrade support by @arferreira in #281
- Add OpenAPI documentation page by @arferreira in #287
- Add starter templates by @LevelUpExtreme in #238
- Add raw WebSocket support behind feature flag by @arferreira in #282
- Add Relay system for real-time push over WebSocket by @arferreira in #283
- Add validation documentation page by @arferreira in #288
- Add testing documentation page by @arferreira in #286
- Add group parameter to route macros for auto-discovery by @arferreira in #285
- Add channel handlers and presence tracking by @arferreira in #284
- Fix syntax highlighting on docs pages by @arferreira in #291
- update zola version in ci workflow by @ShiraiEd in #294
- Add interactive tutorial with 6 chapters by @arferreira in #301
- Update: Bump github/codeql-action from 4.32.5 to 4.32.6 by @dependabot[bot] in #296
- Update: Bump uuid from 1.21.0 to 1.22.0 by @dependabot[bot] in #297
- Update: Bump tokio from 1.49.0 to 1.50.0 by @dependabot[bot] in #298
- Update: Bump quote from 1.0.44 to 1.0.45 by @dependabot[bot] in #300
- Replace hardcoded content-type strings with typed constants by @uemuradevexe in #270
- Add weekly changelog template by @uemuradevexe in #303
- Add migration documentation page by @arferreira in #292
- Update docs to use Deref pattern by @arferreira in #293
- Add WebSocket and Relay documentation by @arferreira in #295
- add di docs by @ShiraiEd in #302
- Make graceful shutdown Windows-compatible by @juv in #304
- Release 0.9.0 by @arferreira in #306
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
- Fix static routes shadowed by parameterized routes by @arferreira in https://github.com/arferreira/rapina/pull/255
- Fix schema! macro JsonSchema for Uuid and Decimal by @arferreira in https://github.com/arferreira/rapina/pull/257
- Add NaiveDateTime and composite primary key support by @arferreira in https://github.com/arferreira/rapina/pull/259
- Add built-in pagination by @arferreira in https://github.com/arferreira/rapina/pull/267
- Add response caching layer by @arferreira in https://github.com/arferreira/rapina/pull/268
- Implement Deref on extractor newtypes by @Ismaellima4 in https://github.com/arferreira/rapina/pull/266
Full Changelog: arferreira/rapina@v0.7.0...v0.8.0
v0.7.0
The big addition here is rapina import database — point the CLI at a live database and it reverse-engineers your schema into Rapina modules with handlers, DTOs, entities, and migrations. Also: graceful shutdown, structured logging with tracing, and CLI improvements across the board.
Database Import
rapina import database --url postgres://user:pass@host/db
rapina import database --url postgres://... --tables users,posts
rapina import database --url postgres://... --schema publicConnects to a live PostgreSQL, MySQL, or SQLite database, introspects the schema, and generates a full feature module per table: handlers (CRUD), DTOs with validation, typed error enums, schema! entity blocks, and migrations. Foreign keys become relationship fields. Supports table filtering and schema selection.
Feature-gated behind import-postgres, import-mysql, or import-sqlite to keep the base CLI dependency-free.
Graceful Shutdown
Rapina now handles SIGTERM/SIGINT properly — in-flight requests finish before the server exits. No more dropped connections on deploy.
Other Changes
println/eprintlnreplaced withtracingacross the CLI (#231)rapina doctorandrapina routesnow accept--portand--hostparams (#248)- AI assistant config files (AGENT.md, .claude/, .cursor/) included in
rapina newtemplate (#230) - Catppuccin color palette extracted into shared module (#228)
- Unit tests for OpenAPI and introspection endpoint handlers (#239)
- Fixed Cargo.toml parser error on
rapina devandrapina test(#237) - Middleware documentation page (#204)
- README.md added to project template (#193)
Upgrade
rapina = "0.7.0"cargo install rapina-cliThanks to @ShiraiEd, @Ismaellima4, @uemuradevexe, @KelvinDiasMoreira, and @LevelUpExtreme for their contributions to this release.
What's Changed
- #147 feat: add README.md to project template by @LevelUpExtreme in https://github.com/arferreira/rapina/pull/193
- docs: add middleware documentation page by @uemuradevexe in https://github.com/arferreira/rapina/pull/204
- #211 chore: replace-println-and-eprintln-with-tracing by @uemuradevexe in https://github.com/arferreira/rapina/pull/231
- #208 refactor(cli): extract shared Catppuccin color palette module by @uemuradevexe in https://github.com/arferreira/rapina/pull/228
- Add AI assistant config files to rapina new template by @arferreira in https://github.com/arferreira/rapina/pull/230
- test: add unit tests for openapi and introspection endpoint handlers by @Ismaellima4 in https://github.com/arferreira/rapina/pull/239
- fix: fixed Cargo.toml parser error when run rapina dev and rapina tests by @Ismaellima4 in https://github.com/arferreira/rapina/pull/237
- #163 Feat/add graceful shutdown by @ShiraiEd in https://github.com/arferreira/rapina/pull/233
- Add rapina import database command by @arferreira in https://github.com/arferreira/rapina/pull/240
- Update: bump actions/upload-artifact from 4.6.2 to 7.0.0 by @dependabot[bot] in https://github.com/arferreira/rapina/pull/250
- feat: CLI doctor and routes params by @KelvinDiasMoreira in https://github.com/arferreira/rapina/pull/248
New Contributors
- @LevelUpExtreme made their first contribution in https://github.com/arferreira/rapina/pull/193
- @Ismaellima4 made their first contribution in https://github.com/arferreira/rapina/pull/239
- @KelvinDiasMoreira made their first contribution in https://github.com/arferreira/rapina/pull/248
Full Changelog: arferreira/rapina@v0.6.0...v0.7.0
v0.6.0
The headline here is route auto discovery. Annotate your handlers, call .discover(), and Rapina finds everything at startup. No more manual route wiring in main.rs.
Route Auto Discovery
#[get("/users")]
async fn list_users() -> Json<Vec<User>> { ... }
#[post("/users")]
async fn create_user(input: Validated<Json<CreateUser>>) -> Json<User> { ... }
#[tokio::main]
async fn main() -> std::io::Result<()> {
Rapina::new()
.discover()
.listen("127.0.0.1:3000")
.await
}Three lines in main. Routes are registered via inventory at startup — add a handler anywhere in your crate and it just works.
Other Changes
tomlupgraded to 1.0 (TOML spec 1.1 support)jsonwebtokenbumped to 10.3.0- Auto-labeler and welcome message for new contributors
- Discord links consolidated across docs
- Mobile header overflow fix on docs site
- Prometheus metrics endpoint
Upgrade
rapina = "0.6.0"cargo install rapina-cliThanks to @Jamersom-silva, @lucaserm, @uemuradevexe, and @sofia-araujo for their contributions.
v0.5.0
The big addition here is rapina add resource — a single command that scaffolds an entire CRUD resource from the CLI.
Resource Scaffolding
rapina add resource user name:string email:string active:boolThis generates everything you need: handlers (list, get, create, update, delete), DTOs with JsonSchema, typed error handling, a schema! entity block, and a pre-filled database migration. Then it tells you exactly what to wire into main.rs.
Supports 12 field types with aliases (string, text, i32/integer, i64/bigint, f32/float, f64/double, bool/boolean, uuid, datetime, date, decimal, json). Conflict detection fails fast if the resource already exists.
The generated code matches the conventions from the todo-app example exactly — no surprises when you read what was scaffolded.
Database Migrations
New rapina migrate new command for standalone migrations:
rapina migrate new add_avatar_to_usersThe add resource command generates pre-filled migrations automatically, but migrate new is there when you need migrations outside of resource creation (adding columns, indexes, etc.).
Other Changes
- Improved documentation site UX
- TraceIdMiddleware unit and integration tests
- AppState doc comments
- Fixed release workflow for manual releases
Upgrade
rapina = "0.5.0"If you're using the CLI:
cargo install rapina-cliThanks to @yan-pi and @ShiraiEd for their contributions to this release.
v0.4.0
This release brings database support, better testing tools, and a bunch of middleware we've been missing.
Database Integration
The big one. You can now define your schema declaratively and get SeaORM entities generated:
rapina::schema! {
User {
#[unique]
email: String,
posts: Vec<Post>,
}
Post {
title: String,
content: Text,
author: User, // generates author_id foreign key
}
}Relationships are inferred from types. Vec<Post> is has_many, User is belongs_to. Optional relationships use Option<User>. Timestamps are automatic but can be disabled with #[timestamps(none)].
Database connection via the Db extractor:
#[get("/posts")]
async fn list_posts(db: Db) -> Result<Json<Vec<Post>>> {
let posts = Post::find().all(db.conn()).await?;
Ok(Json(posts))
}Enable with features = ["postgres"] (or mysql, sqlite).
Testing
New rapina test command with coverage support:
rapina test # run tests
rapina test --coverage # with coverage report
rapina test --watch # re-run on file changesMiddleware
- Rate limiting - Token bucket algorithm, configurable per-route
- Response compression - gzip/brotli support
- CORS - Configurable origins, methods, headers
- Cookie extractor - Typed cookie access in handlers
Other Changes
- Fixed variable shadowing in route macros
- Modular API grouping with
Router::group() - Better error messages across the board
Upgrade
rapina = "0.4.0"If you're using the CLI:
cargo install rapina-cliThanks to @juv, @ShiraiEd, and @uemuradevexe for their contributions to this release.
v0.2.1
Bug Fixes
- Fixed infinite restart loop when server crashes in rapina dev (#111)
- Fixed rapina new scaffolded projects failing to build (#112)
- Made OpenAPI endpoint optional in rapina doctor (#114)
- Fixed typo in OpenAPI endpoint comment (#107)
Improvements
- Extracted x-trace-id header into a constant (#106)
- Extracted content-type strings into constants (#104)
New Contributors
- @uemuradevexe made their first contribution in https://github.com/arferreira/rapina/pull/104
- @juv made their first contribution in https://github.com/arferreira/rapina/pull/107
Full Changelog: arferreira/rapina@v0.2.0...v0.2.1