Skip to content

Releases: SeaQL/sea-orm

0.9.1

21 Jul 16:44
Compare
Choose a tag to compare

Enhancements

  • [sea-orm-cli] Codegen support for VarBinary column type #746
  • [sea-orm-cli] Generate entity for SYSTEM VERSIONED tables on MariaDB #876

Bug Fixes

  • RelationDef & RelationBuilder should be Send & Sync #898

House keeping

  • Remove unnecessary async_trait #737

0.9.0

17 Jul 09:31
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2022-07-17-whats-new-in-0.9.0/

New Features

  • Cursor pagination (#822)
  • Custom join on conditions (#793)
  • DeriveMigrationName and sea_orm_migration::util::get_file_stem (#736)
  • FromJsonQueryResult for deserializing Json from query result (#794)

Enhancements

  • Added sqlx_logging_level to ConnectOptions (#800)
  • Added num_items_and_pages to Paginator (#768)
  • Added TryFromU64 for time (#849)
  • Added Insert::on_conflict (#791)
  • Added QuerySelect::join_as and QuerySelect::join_as_rev (#852)
  • Include column name in TryGetError::Null (#853)
  • [sea-orm-cli] Improve logging (#735)
  • [sea-orm-cli] Generate enum with numeric like variants (#588)
  • [sea-orm-cli] Allow old pending migration to be applied (#755)
  • [sea-orm-cli] Skip generating entity for ignored tables (#837)
  • [sea-orm-cli] Generate code for time crate (#724)
  • [sea-orm-cli] Add various blob column types (#850)
  • [sea-orm-cli] Generate entity files with Postgres's schema name (#422)

Upgrades

  • Upgrade clap to 3.2 (#706)
  • Upgrade time to 0.3 (#834)
  • Upgrade sqlx to 0.6 (#834)
  • Upgrade uuid to 1.0 (#834)
  • Upgrade sea-query to 0.26 (#834)
  • Upgrade sea-schema to 0.9 (#834)

House keeping

  • Refactor stream metrics (#778)

Bug Fixes

  • [sea-orm-cli] skip checking connection string for credentials (#851)

Breaking changes

  • SelectTwoMany::one() has been dropped #813, you can get (Entity, Vec<RelatedEntity>) by first querying a single model from Entity, then use [ModelTrait::find_related] on the model.
  • Feature flag revamp

    We now adopt the weak dependency syntax in Cargo. That means the flags ["sqlx-json", "sqlx-chrono", "sqlx-decimal", "sqlx-uuid", "sqlx-time"] are not needed and now removed. Instead, with-time will enable sqlx?/time only if sqlx is already enabled. As a consequence, now the features with-json, with-chrono, with-rust_decimal, with-uuid, with-time will not be enabled as a side-effects of enabling sqlx.

New Contributors

Full Changelog: 0.8.0...0.9.0

0.8.0

09 May 16:13
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2022-05-15-whats-new-in-0.8.0/

New Features

  • [sea-orm-cli] sea migrate generate to generate a new, empty migration file #656

Enhancements

  • Add max_connections option to CLI #670
  • Derive Eq, Clone for DbErr #677
  • Add is_changed to ActiveModelTrait #683

Bug Fixes

  • Fix DerivePrimaryKey with custom primary key column name #694
  • Fix DeriveEntityModel macros override column name #695
  • Fix Insert with no value supplied using DEFAULT #589

Breaking changes

  • Migration utilities are moved from sea-schema to sea-orm repo, under a new sub-crate sea-orm-migration. sea_schema::migration::prelude should be replaced by sea_orm_migration::prelude in all migration files

Upgrades

  • Upgrade sea-query to 0.24.x, sea-schema to 0.8.x
  • Upgrade example to Actix Web 4, Actix Web 3 remains #638
  • Added Tonic gRPC example #659
  • Upgrade GraphQL example to use axum 0.5.x
  • Upgrade axum example to 0.5.x

Fixed Issues

  • Failed to insert row with only default values #420
  • Reduce database connections to 1 during codegen #511
  • Column names with single letters separated by underscores are concatenated #630
  • Update Actix Web examples #639
  • Lower function missing #672
  • is_changed on active_model #674
  • Failing find_with_related with column_name attribute #693

New Contributors

Full Changelog: 0.7.1...0.8.0

0.7.0

26 Mar 11:32
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2022-03-26-whats-new-in-0.7.0/

New Features

Enhancements

Bug Fixes

Breaking changes

  • Exclude mock from default features by @billy1624 #562
  • create_table_from_entity will no longer create index for MySQL, please use the new method create_index_from_entity

Documentations

Fixed Issues

  • orm-cli generated incorrect type for #[sea_orm(primary_key)]. Should be u64. Was i64. #295
  • how to update dynamicly from json value #346
  • Make DatabaseConnection Clone with the default features enabled #438
  • Updating mutiple fields in a Model by passing a reference #460
  • SeaORM CLI not adding serde derives to Enums #461
  • sea-orm-cli generates wrong datatype for nullable blob #490
  • Support the time crate in addition (instead of?) chrono #499
  • PaginatorTrait for SelectorRaw #500
  • sea_orm::DatabaseConnection should implement Clone by default #517
  • How do you seed data in migrations using ActiveModels? #522
  • Datetime fields are not serialized by .into_json() on queries #530
  • Update / Delete by id #552
  • #[sea_orm(indexed)] only works for MySQL #554
  • sea-orm-cli generate --with-serde does not work on Postegresql custom type #581
  • sea-orm-cli generate --expanded-format panic when postgres table contains enum type #614
  • UUID fields are not serialized by .into_json() on queries #619

New Contributors

Full Changelog: 0.6.0...0.7.0

0.6.0

06 Feb 16:58
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2022-02-07-whats-new-in-0.6.0/

New Features

Enhancements

Bug Fixes

  • CLI allow generate entity with url without password by @billy1624 in #436
  • Support up to 6-ary composite primary key by @billy1624 in #423
  • Fix FromQueryResult when Result is redefined by @tasn in #495
  • Remove r# prefix when deriving FromQueryResult by @smrtrfszm in #494

Breaking Changes

  • Name conflict of foreign key constraints when two entities have more than one foreign keys by @billy1624 in #417

Fixed Issues

  • Is it possible to have 4 values Composite Key? #352
  • Support DateTime<Utc> & DateTime<Local> #381
  • Codegen column_name proc_macro attribute if column name isn't in snake case #395
  • Model with Generics #402
  • Foreign key constraint collision when multiple keys exist between the same two tables #405
  • sea-orm-cli passwordless database user causes "No password was found in the database url" error #435
  • Testing joins with MockDatabase #447
  • Surface max_lifetime connection option #475

New Contributors

Full Changelog: 0.5.0...0.6.0

0.5.0

06 Feb 16:55
Compare
Choose a tag to compare

https://www.sea-ql.org/blog/2022-01-01-whats-new-in-0.5.0/

Fixed Issues

  • Why insert, update, etc return a ActiveModel instead of Model? #289
  • Rework ActiveValue #321
  • Some missing ActiveEnum utilities #338

Merged PRs

Breaking Changes

  • ActiveModel::insert and ActiveModel::update return Model instead of ActiveModel
  • Method ActiveModelBehavior::after_save takes Model as input instead of ActiveModel
  • Rename method sea_orm::unchanged_active_value_not_intended_for_public_use to sea_orm::Unchanged
  • Rename method ActiveValue::unset to ActiveValue::not_set
  • Rename method ActiveValue::is_unset to ActiveValue::is_not_set
  • PartialEq of ActiveValue will also check the equality of state instead of just checking the equality of value

New Contributors

  • @ttys3 made their first contribution in #383
  • @Gabriel-Paulucci made their first contribution in #384

Full Changelog: 0.4.2...0.5.0

0.4.2

12 Dec 15:01
Compare
Choose a tag to compare

Fixed Issues

  • Delete::many() doesn't work when schema_name is defined #362
  • find_with_related panic #374
  • How to define rust type of TIMESTAMP? #344
  • Add Table on the generated Column enum #356

Merged PRs

New Contributors

Full Changelog: 0.4.1...0.4.2

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