Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
February 20, 2022 02:29 am GMT

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.

  1. 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
  2. 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    }}
  3. 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

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To