SeaQL / sea-orm

🐚 An async & dynamic ORM for Rust
https://www.sea-ql.org/SeaORM/
Apache License 2.0
7.37k stars 517 forks source link

Make sea-orm-cli & sea-orm-migration dependencies optional #2367

Open xamgore opened 1 month ago

xamgore commented 1 month ago

Addresses #2320.

My team is working on a workspace project. To make sure generated models are always the same, we decided to make sea-orm-cli a member crate. You may find details at the discussion 1889.

The problem is, sea-orm-cli/codegen feature imports all the database drivers, even though sqlite and mysql represent zero interest for me.

codegen = ["sea-schema/sqlx-all", "sea-orm-codegen"]

libsqlite-sys + sqlx-mysql + sqlx-sqlite take quite a few seconds in total compilation time, and I believe this could be improved.

image

I've gone through dependency-hell feature-shenanigans, but could easily make a mistake. So testing and merging this PR won't be easy. I tested the code on my local environment: tweaked all the possible combinations of features to see, whether the compiler would grumble. Also, I have patched my team project with local sea-orm codebase and tested it against it.

xamgore commented 1 month ago

@billy1624 could you allow CI checks, please?