An Interest In:
Web News this Week
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
- April 18, 2024
- April 17, 2024
What's new in SeaORM 0.6.0
We are pleased to release SeaORM 0.6.0
today! Here are some feature highlights :
Migration
[#335] Version control you database schema with migrations written in SeaQuery or in raw SQL. View migration docs to learn more.
Setup the migration directory by executing
sea-orm-cli migrate init
.migration Cargo.toml README.md src lib.rs m20220101_000001_create_table.rs main.rs
Defines the migration in SeaQuery.
use sea_schema::migration::prelude::*;pub struct Migration;impl MigrationName for Migration { fn name(&self) -> &str { "m20220101_000001_create_table" }}#[async_trait::async_trait]impl MigrationTrait for Migration { async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { manager .create_table( ... ) .await } async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { manager .drop_table( ... ) .await }}
Apply the migration by executing
sea-orm-cli migrate
.$ sea-orm-cli migrateApplying all pending migrationsApplying migration 'm20220101_000001_create_table'Migration 'm20220101_000001_create_table' has been applied
Designed by:
Contributed by:
Support DateTimeUtc & DateTimeLocal in Model
[#489] Represents database's timestamp column in Model with attribute of type DateTimeLocal
(chrono::DateTime<Local>
) or DateTimeUtc
(chrono::DateTime<Utc>
).
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]#[sea_orm(table_name = "satellite")]pub struct Model { #[sea_orm(primary_key)] pub id: i32, pub satellite_name: String, pub launch_date: DateTimeUtc, pub deployment_date: DateTimeLocal,}
Proposed by:
Contributed by:
Mock Join Results
[#455] Constructs mock results of related model with tuple of model.
let db = MockDatabase::new(DbBackend::Postgres) // Mocking result of cake with its related fruit .append_query_results(vec![vec![( cake::Model { id: 1, name: "Apple Cake".to_owned(), }, fruit::Model { id: 2, name: "Apple".to_owned(), cake_id: Some(1), }, )]]) .into_connection();assert_eq!( cake::Entity::find() .find_also_related(fruit::Entity) .all(&db) .await?, vec![( cake::Model { id: 1, name: "Apple Cake".to_owned(), }, Some(fruit::Model { id: 2, name: "Apple".to_owned(), cake_id: Some(1), }) )]);
Proposed by:
Contributed by:
Support Max Connection Lifetime Option
[#493] You can set the maximum lifetime of individual connection with the max_lifetime
method.
let mut opt = ConnectOptions::new("protocol://username:password@host/database".to_owned());opt.max_lifetime(Duration::from_secs(8)) .max_connections(100) .min_connections(5) .connect_timeout(Duration::from_secs(8)) .idle_timeout(Duration::from_secs(8)) .sqlx_logging(true);let db = Database::connect(opt).await?;
Proposed by:
Contributed by:
SeaORM CLI & Codegen Updates
- [#433] Generates the
column_name
macro attribute for column which is not named in snake case - [#335] Introduces migration subcommands
sea-orm-cli migrate
Proposed by:
Contributed by:
Sponsor
Our GitHub Sponsor profile is up! If you feel generous, a small donation will be greatly appreciated.
A big shout out to our sponsors :
Community
SeaQL is a community driven project. We welcome you to participate, contribute and together build for Rust's future.
Here is the roadmap for SeaORM 0.7.x
.
Original Link: https://dev.to/seaql/whats-new-in-seaorm-060-4loe
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To