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 migr…


This content originally appeared on DEV Community and was authored by SeaQL

🎉 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 migrate
    Applying all pending migrations
    Applying 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.


This content originally appeared on DEV Community and was authored by SeaQL


Print Share Comment Cite Upload Translate Updates
APA

SeaQL | Sciencx (2022-02-20T02:29:19+00:00) What’s new in SeaORM 0.6.0. Retrieved from https://www.scien.cx/2022/02/20/whats-new-in-seaorm-0-6-0/

MLA
" » What’s new in SeaORM 0.6.0." SeaQL | Sciencx - Sunday February 20, 2022, https://www.scien.cx/2022/02/20/whats-new-in-seaorm-0-6-0/
HARVARD
SeaQL | Sciencx Sunday February 20, 2022 » What’s new in SeaORM 0.6.0., viewed ,<https://www.scien.cx/2022/02/20/whats-new-in-seaorm-0-6-0/>
VANCOUVER
SeaQL | Sciencx - » What’s new in SeaORM 0.6.0. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/02/20/whats-new-in-seaorm-0-6-0/
CHICAGO
" » What’s new in SeaORM 0.6.0." SeaQL | Sciencx - Accessed . https://www.scien.cx/2022/02/20/whats-new-in-seaorm-0-6-0/
IEEE
" » What’s new in SeaORM 0.6.0." SeaQL | Sciencx [Online]. Available: https://www.scien.cx/2022/02/20/whats-new-in-seaorm-0-6-0/. [Accessed: ]
rf:citation
» What’s new in SeaORM 0.6.0 | SeaQL | Sciencx | https://www.scien.cx/2022/02/20/whats-new-in-seaorm-0-6-0/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.