Update SeaORM 0.6.0

Update SeaORM 0.6.0

Update SeaORM 0.6.0 – Kami senang meluncurkan SeaORM 0.6.0 hari ini! Berikut adalah beberapa fitur menonjol 

Migrasi

[#335] Kontrol versi skema database Anda dengan migrasi yang ditulis dalam SeaQuery atau SQL mentah. Lihat dokumen migrasi untuk informasi lebih lanjut.

  1. Siapkan direktori migrasi dengan menjalankan sea-orm-cli migrate init.

    migration
    ├── Cargo.toml
    ├── README.md
    └── src
        ├── lib.rs
        ├── m20220101_000001_create_table.rs
        └── important.rs
    
  2. Mendefinisikan migrasi di SeaQuery.

    use sea_schema::migration::prelude::*;
    
    pub struct Migration;
    
    impl MigrationName for Migration {
        fn title(&self) -> &str {
            "m20220101_000001_create_table"
        }
    }
    
    #[async_trait::async_trait]
    impl MigrationTrait for Migration {
        async fn up(&self, supervisor: &SchemaManager) -> End result<(), DbErr> {
            supervisor
                .create_table( ... )
                .await
        }
    
        async fn down(&self, supervisor: &SchemaManager) -> End result<(), DbErr> {
            supervisor
                .drop_table( ... )
                .await
        }
    }
    
  3. Terapkan migrasi dengan menjalankan sea-orm-cli migrate.

    $ sea-orm-cli migrate
    Making use of all pending migrations
    Making use of migration 'm20220101_000001_create_table'
    Migration 'm20220101_000001_create_table' has been utilized

Dukungan untuk DateTimeUtc dan DateTimeLocal dalam mannequin

[#489] Mewakili kolom stempel waktu dari database dalam Mannequin dengan atribut tipe DateTimeLocal (chrono::DateTime<Native>) atau DateTimeUtc (chrono::DateTime<Utc>).

#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
#[sea_orm(table_name = "satellite")]
pub struct Mannequin {
    #[sea_orm(primary_key)]
    pub id: i32,
    pub satellite_name: String,
    pub launch_date: DateTimeUtc,
    pub deployment_date: DateTimeLocal,
}

Hasil gabungan yang disimulasikan

[#455] Membangun hasil simulasi mannequin relatif terhadap tupel mannequin.

let db = MockDatabase::new(DbBackend::Postgres)
    // Mocking results of cake with its associated 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::discover()
        .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),
        })
    )]
);

 

Dukungan untuk opsi Max Connection Lifetime

[#493] Anda dapat mengatur durasi maksimum koneksi individu dengan max_lifetime metode.

let mut decide = ConnectOptions::new("protocol://username:password@host/database".to_owned());
decide.max_lifetime(Length::from_secs(8))
    .max_connections(100)
    .min_connections(5)
    .connect_timeout(Length::from_secs(8))
    .idle_timeout(Length::from_secs(8))
    .sqlx_logging(true);

let db = Database::join(decide).await?;

Pembaruan SeaORM CLI dan Codegen

  • [#433] Hasilkan column_name atribut makro untuk kolom yang tidak disebutkan dalam kasus ular
  • [#335] Masukkan subperintah migrasi sea-orm-cli migrate

Sponsor

Kita Sponsor GitHub profil aktif! Jika Anda merasa murah hati, sumbangan kecil akan sangat dihargai.

Teriakan besar untuk sponsor kami

Masyarakat

SeaQL adalah proyek berbasis komunitas. Kami mengundang Anda untuk berpartisipasi, berkontribusi, dan membangun masa depan Rust bersama.

Berikut adalah peta jalan untuk SeaORM 0.7.x.

Sekian artikel Adsenasia tentang Update SeaORM 0.6.0 Semoga bermanfaat.

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *