From 06a26ace2ec1e220a0d603e0ebf4bc5995aa5983 Mon Sep 17 00:00:00 2001 From: Billy Chan Date: Fri, 24 Sep 2021 15:30:41 +0800 Subject: [PATCH] Codegen parse column unique key from index --- sea-orm-cli/Cargo.toml | 2 +- sea-orm-codegen/Cargo.toml | 2 +- sea-orm-codegen/src/entity/transformer.rs | 11 +++++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/sea-orm-cli/Cargo.toml b/sea-orm-cli/Cargo.toml index 0bb557f6..56e2fa4a 100644 --- a/sea-orm-cli/Cargo.toml +++ b/sea-orm-cli/Cargo.toml @@ -22,7 +22,7 @@ clap = { version = "^2.33.3" } dotenv = { version = "^0.15" } async-std = { version = "^1.9", features = [ "attributes" ] } sea-orm-codegen = { version = "^0.2.3", path = "../sea-orm-codegen" } -sea-schema = { version = "^0.2.8", default-features = false, features = [ +sea-schema = { version = "^0.2.8", git = "https://github.com/SeaQL/sea-schema.git", branch = "sea-query/idx-is-unique-key", default-features = false, features = [ "debug-print", "sqlx-mysql", "sqlx-postgres", diff --git a/sea-orm-codegen/Cargo.toml b/sea-orm-codegen/Cargo.toml index c3a2c8cd..fd0be16f 100644 --- a/sea-orm-codegen/Cargo.toml +++ b/sea-orm-codegen/Cargo.toml @@ -15,7 +15,7 @@ name = "sea_orm_codegen" path = "src/lib.rs" [dependencies] -sea-query = { version = "^0.16.2" } +sea-query = { version = "^0.16.2", git = "https://github.com/SeaQL/sea-query.git", branch = "idx-is-unique-key" } syn = { version = "^1", default-features = false, features = [ "derive", "parsing", diff --git a/sea-orm-codegen/src/entity/transformer.rs b/sea-orm-codegen/src/entity/transformer.rs index 840eade0..5e9fc467 100644 --- a/sea-orm-codegen/src/entity/transformer.rs +++ b/sea-orm-codegen/src/entity/transformer.rs @@ -33,6 +33,17 @@ impl EntityTransformer { .get_columns() .iter() .map(|col_def| col_def.into()) + .map(|mut col: Column| { + col.unique = table_create + .get_indexes() + .iter() + .filter(|index| index.is_unique_key()) + .map(|index| index.get_index_spec().get_column_names()) + .filter(|col_names| col_names.len() == 1 && col_names[0] == col.name) + .count() + > 0; + col + }) .collect(); let relations = table_create .get_foreign_key_create_stmts()