Codegen parse column unique key from index

This commit is contained in:
Billy Chan 2021-09-24 15:30:41 +08:00
parent 6861802a6d
commit 06a26ace2e
No known key found for this signature in database
GPG Key ID: A2D690CAC7DF3CC7
3 changed files with 13 additions and 2 deletions

View File

@ -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",

View File

@ -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",

View File

@ -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()