Skip to content

Releases: SeaQL/sea-orm

0.4.1

04 Dec 16:19
Compare
Choose a tag to compare

Fixed Issues

  • Is it possible to have 4 values Composite Key? #352
  • [sea-orm-cli] Better handling of relation generations #239

Merged PRs

  • Add TryFromU64 trait for DateTime<FixedOffset>. by @kev0960 in #331
  • add offset and limit by @lz1998 in #351
  • For some reason the axum_example fail to compile by @billy1624 in #355
  • Support Up to 6 Values Composite Primary Key by @billy1624 in #353
  • Codegen Handle Self Referencing & Multiple Relations to the Same Related Entity by @billy1624 in #347

New Contributors

Full Changelog: 0.4.0...0.4.1

0.4.0

19 Nov 15:19
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2021-11-19-whats-new-in-0.4.0/

Fixed Issues

  • Disable SQLx query logging #290
  • Code generated by sea-orm-cli cannot pass clippy #296
  • Should return detailed error message for connection failure #310
  • DateTimeWithTimeZone does not implement Serialize and Deserialize #319
  • Support returning clause to avoid database hits #183

Merged PRs

Breaking Changes

  • Refactor paginate() & count() utilities into PaginatorTrait. You can use the paginator as usual but you might need to import PaginatorTrait manually when upgrading from previous version.
    use futures::TryStreamExt;
    use sea_orm::{entity::*, query::*, tests_cfg::cake};
    
    let mut cake_stream = cake::Entity::find()
        .order_by_asc(cake::Column::Id)
        .paginate(db, 50)
        .into_stream();
    
    while let Some(cakes) = cake_stream.try_next().await? {
        // Do something on cakes: Vec<cake::Model>
    }
  • The helper struct Schema converting EntityTrait into different sea-query statement now has to be initialized with DbBackend.
    use sea_orm::{tests_cfg::*, DbBackend, Schema};
    use sea_orm::sea_query::TableCreateStatement;
    
    // 0.3.x
    let _: TableCreateStatement = Schema::create_table_from_entity(cake::Entity);
    
    // 0.4.x
    let schema: Schema = Schema::new(DbBackend::MySql);
    let _: TableCreateStatement = schema.create_table_from_entity(cake::Entity);
  • When performing insert or update operation on ActiveModel against PostgreSQL, RETURNING clause will be used to perform select in a single SQL statement.
    // For PostgreSQL
    cake::ActiveModel {
        name: Set("Apple Pie".to_owned()),
        ..Default::default()
    }
    .insert(&postgres_db)
    .await?;
    
    assert_eq!(
        postgres_db.into_transaction_log(),
        vec![Transaction::from_sql_and_values(
            DbBackend::Postgres,
            r#"INSERT INTO "cake" ("name") VALUES ($1) RETURNING "id", "name""#,
            vec!["Apple Pie".into()]
        )]);
    // For MySQL & SQLite
    cake::ActiveModel {
        name: Set("Apple Pie".to_owned()),
        ..Default::default()
    }
    .insert(&other_db)
    .await?;
    
    assert_eq!(
        other_db.into_transaction_log(),
        vec![
            Transaction::from_sql_and_values(
                DbBackend::MySql,
                r#"INSERT INTO `cake` (`name`) VALUES (?)"#,
                vec!["Apple Pie".into()]
            ),
            Transaction::from_sql_and_values(
                DbBackend::MySql,
                r#"SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` = ? LIMIT ?"#,
                vec![15.into(), 1u64.into()]
            )]);

New Contributors

Full Changelog: 0.3.2...0.4.0

0.3.2

02 Nov 17:42
Compare
Choose a tag to compare

Fixed Issues

  • Support for BYTEA Postgres primary keys #286

Merged PRs

New Contributors

Full Changelog: 0.3.1...0.3.2

0.3.1

23 Oct 08:11
Compare
Choose a tag to compare

Fixed Issues

  • Align case trasforms across derive macros #262
  • Added is_null and is_not_null to ColumnTrait #267

Merged PRs

New Contributors

Full Changelog: 0.3.0...0.3.1

0.3.0

15 Oct 18:11
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2021-10-15-whats-new-in-0.3.0/

  • Built-in Rocket support
  • ConnectOptions
let mut opt = ConnectOptions::new("protocol://username:password@host/database".to_owned());
opt.max_connections(100)
    .min_connections(5)
    .connect_timeout(Duration::from_secs(8))
    .idle_timeout(Duration::from_secs(8));
let db = Database::connect(opt).await?;
  • [#211] Throw error if none of the db rows are affected
assert_eq!(
    Update::one(cake::ActiveModel {
        name: Set("Cheese Cake".to_owned()),
        ..model.into_active_model()
    })
    .exec(&db)
    .await,
    Err(DbErr::RecordNotFound(
        "None of the database rows are affected".to_owned()
    ))
);

assert_eq!(
    Update::many(cake::Entity)
        .col_expr(cake::Column::Name, Expr::value("Cheese Cake".to_owned()))
        .filter(cake::Column::Id.eq(2))
        .exec(&db)
        .await,
    Ok(UpdateResult { rows_affected: 0 })
);
  • [#223] ActiveValue::take() & ActiveValue::into_value() without unwrap()
  • [#205] Drop Default trait bound of PrimaryKeyTrait::ValueType
  • [#222] Transaction & streaming
  • [#210] Update ActiveModelBehavior API
  • [#240] Add derive DeriveIntoActiveModel and IntoActiveValue trait
  • [#237] Introduce optional serde support for model code generation
  • [#246] Add #[automatically_derived] to all derived implementations

0.2.6

09 Oct 15:20
Compare
Choose a tag to compare
  • [#224] [sea-orm-cli] Date & Time column type mapping
  • Escape rust keywords with r# raw identifier

0.2.5

06 Oct 10:56
Compare
Choose a tag to compare
  • [#227] Resolve "Inserting actual none value of Option results in panic"
  • [#219] [sea-orm-cli] Add --tables option
  • [#189] Add debug_query and debug_query_stmt macro

0.2.4

01 Oct 04:39
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2021-10-01-whats-new-in-0.2.4/

  • [[#186]] [sea-orm-cli] Foreign key handling
  • [[#191]] [sea-orm-cli] Unique key handling
  • [[#182]] find_linked join with alias
  • [[#202]] Accept both postgres:// and postgresql://
  • [[#208]] Support feteching T, (T, U), (T, U, P) etc
  • [[#209]] Rename column name & column enum variant
  • [[#207]] Support chrono::NaiveDate & chrono::NaiveTime
  • Support Condition::not (from sea-query)

0.2.3

22 Sep 10:09
Compare
Choose a tag to compare
  • [[#152]] DatabaseConnection impl Clone
  • [[#175]] Impl TryGetableMany for diffrent types of generics
  • Codegen TimestampWithTimeZone fixup

0.2.2

17 Sep 17:56
Compare
Choose a tag to compare
  • [[#105]] Compact entity format
  • [[#132]] Add ActiveModel insert & update
  • [[#129]] Add set method to UpdateMany
  • [[#118]] Initial lock support
  • [[#167]] Add FromQueryResult::find_by_statement