- Adding compression middleware. loco-rs#205
- Create a new Database from the CLI. loco-rs#223
- Validate if seaorm CLI is installed before running
cargo loco db entitiesand show a better error to the user. loco-rs#212 - Adding to
saas andrest-api` starters a redis and DB in GitHub action workflow to allow users work with github action out of the box. loco-rs#215 - Adding the app name and the environment to the DB name when creating a new starter. loco-rs#216
- Fix generator when users adding a
created_atorupdate_atfields. loco-rs#214
-
See loco-rs#217 Now when you generate a
saas starterorrest apistarter you will get additional authentication methods for free: -
Added: authentication added -- api authentication where each user has an API token in the schema, and you can authenticate with
Beareragainst that user. -
Added: authentication added --
JWTWithUserextractor, which is a convenience for resolving the authenticated JWT claims into a current user from database
migrating an existing codebase
Add the following to your generated src/models/user.rs:
#[async_trait]
impl Authenticable for super::_entities::users::Model {
async fn find_by_api_key(db: &DatabaseConnection, api_key: &str) -> ModelResult<Self> {
let user = users::Entity::find()
.filter(users::Column::ApiKey.eq(api_key))
.one(db)
.await?;
user.ok_or_else(|| ModelError::EntityNotFound)
}
async fn find_by_claims_key(db: &DatabaseConnection, claims_key: &str) -> ModelResult<Self> {
super::_entities::users::Model::find_by_pid(db, claims_key).await
}
}Update imports in this file to include model::Authenticable:
use loco_rs::{
auth, hash,
model::{Authenticable, ModelError, ModelResult},
validation,
validator::Validate,
};- Added:
loco versionfor getting an operable version string containing logical crate version and git SHA if available:0.3.0 (<git sha>)
To migrate to this behavior from earlier versions, it requires adding the following to your app.rs app hooks:
fn app_version() -> String {
format!(
"{} ({})",
env!("CARGO_PKG_VERSION"),
option_env!("BUILD_SHA")
.or(option_env!("GITHUB_SHA"))
.unwrap_or("dev")
)
}Reminder: loco --version will give you the current Loco framework which your app was built against and loco version gives you your app version.
- Added:
loco generate migrationfor adding ad-hoc migrations - Added: added support in model generator for many-to-many link table generation via
loco generate model --link - Docs: added Migration section, added relations documentation 1:M, M:M
- Adding .devcontainer to starter projects loco-rs#170
- Braking changes: Adding
Hooks::bootapplication. Migration steps:// Load boot::{create_app, BootResult, StartMode} from loco_rs lib // Load migration: use migration::Migrator; Only when using DB // Adding boot hook with the following code impl Hooks for App { ... async fn boot(mode: StartMode, environment: &str) -> Result<BootResult> { // With DB: create_app::<Self, Migrator>(mode, environment).await // Without DB: create_app::<Self>(mode, environment).await } ... }
- Added pretty backtraces loco-rs#41
- adding tests for note requests loco-rs#156
- Define the min rust version the loco can run loco-rs#164
- Added
cargo loco doctorcli command for validate and diagnose configurations. loco-rs#145 - Added ability to specify
settings:in config files, which are available in context - Adding compilation mode in the banner. loco-rs#127
- Support shuttle deployment generator. loco-rs#124
- Adding a static asset middleware which allows to serve static folder/data. Enable this section in config. loco-rs#134
static: enable: true # ensure that both the folder.path and fallback file path are existence. must_exist: true folder: uri: "/assets" path: "frontend/dist" fallback: "frontend/dist/index.html"
- fix:
loco generate requesttest template. loco-rs#133 - Improve docker deployment generator. loco-rs#131
- refactor: local settings are now
<env>.local.yamland available for all environments, for example you can add a localtest.local.yamlanddevelopment.local.yaml - refactor: removed
config-rsand now doing config loading by ourselves. - fix: email template rendering will not escape URLs
- Config with variables: It is now possible to use tera templates in config YAML files
Example of pulling a port from environment:
server:
port: {{ get_env(name="NODE_PORT", default=3000) }}It is possible to use any tera templating constructs such as loops, conditionals, etc. inside YAML configuration files.
-
Mailer: expose
stubin non-test -
Hooks::before_runwith a default blank implementation. You can now code some custom loading of resources or other things before the app runs -
an LLM inference example, text generation in Rust, using an API (
examples/inference) -
Loco starters version & create release script loco-rs#110
-
Configure Cors middleware loco-rs#114
-
Hooks::after_routesInvoke this function after the Loco routers have been constructed. This function enables you to configure custom Axum logics, such as layers, that are compatible with Axum. loco-rs#114 -
Adding docker deployment generator loco-rs#119
DOCS:
- Remove duplicated docs in auth section
- FAQ docs: loco-rs#116
ENHANCEMENTS:
- Remove unused libs: loco-rs#106
- turn off default features in tokio loco-rs#118
NEW FEATURES
format:htmlloco-rs#74- Create a stateless HTML starter loco-rs#100
- Added worker generator + adding a way to test workers loco-rs#92
ENHANCEMENTS:
- CI: allows cargo cli run on fork prs loco-rs#96