From 6ff8623a9ddbd2b429eddabe43e03aeeef752be3 Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Thu, 11 Apr 2024 07:47:40 +0000 Subject: [PATCH 01/10] chores(basic):simplify domain code --- backend/basic/src/rbum/domain/rbum_cert.rs | 72 ++-------------- .../basic/src/rbum/domain/rbum_cert_conf.rs | 85 +++---------------- backend/basic/src/rbum/domain/rbum_domain.rs | 64 ++------------ backend/basic/src/rbum/domain/rbum_item.rs | 80 +++-------------- .../basic/src/rbum/domain/rbum_item_attr.rs | 60 ++----------- backend/basic/src/rbum/domain/rbum_kind.rs | 4 + .../basic/src/rbum/domain/rbum_kind_attr.rs | 27 +++--- backend/basic/src/rbum/domain/rbum_rel.rs | 4 + .../basic/src/rbum/domain/rbum_rel_attr.rs | 4 + backend/basic/src/rbum/domain/rbum_rel_env.rs | 4 + backend/basic/src/rbum/domain/rbum_set.rs | 4 + .../basic/src/rbum/domain/rbum_set_cate.rs | 4 + .../basic/src/rbum/domain/rbum_set_item.rs | 4 + 13 files changed, 85 insertions(+), 331 deletions(-) diff --git a/backend/basic/src/rbum/domain/rbum_cert.rs b/backend/basic/src/rbum/domain/rbum_cert.rs index 674292f3b..a88901b16 100644 --- a/backend/basic/src/rbum/domain/rbum_cert.rs +++ b/backend/basic/src/rbum/domain/rbum_cert.rs @@ -5,12 +5,12 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisCreateIndex, TardisEmptyBehavior, TardisEmptyRelation}; /// Credential or authentication instance model /// /// Uniform use of cert refers to credentials or authentication -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_cert")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -59,72 +59,16 @@ pub struct Model { #[index(index_id = "id")] pub rel_rbum_id: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Kind).not_null().string()) - .col(ColumnDef::new(Column::Supplier).not_null().string()) - .col(ColumnDef::new(Column::Ak).not_null().string()) - .col(ColumnDef::new(Column::Sk).not_null().string()) - .col(ColumnDef::new(Column::SkInvisible).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::Ext).not_null().string()) - .col(ColumnDef::new(Column::ConnUri).not_null().string()) - .col(ColumnDef::new(Column::RelRbumCertConfId).not_null().string()) - .col(ColumnDef::new(Column::RelRbumKind).not_null().small_integer()) - .col(ColumnDef::new(Column::RelRbumId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::Status).not_null().small_integer()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::StartTime).not_null().timestamp_with_time_zone()) - .col(ColumnDef::new(Column::EndTime).not_null().timestamp_with_time_zone()) - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::StartTime).not_null().date_time()) - .col(ColumnDef::new(Column::EndTime).not_null().date_time()) - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_cert_conf.rs b/backend/basic/src/rbum/domain/rbum_cert_conf.rs index f8b47fa4e..388013aa0 100644 --- a/backend/basic/src/rbum/domain/rbum_cert_conf.rs +++ b/backend/basic/src/rbum/domain/rbum_cert_conf.rs @@ -5,18 +5,20 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Credential or authentication configuration model /// /// Uniform use of cert refers to credentials or authentication -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_cert_conf")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: String, + #[tardis_entity(custom_len = "127")] #[index(index_id = "id_2", unique)] pub kind: String, + #[tardis_entity(custom_len = "127")] #[index(index_id = "id_2", unique)] pub supplier: String, pub name: String, @@ -25,6 +27,7 @@ pub struct Model { pub ak_rule: String, pub sk_note: String, pub sk_rule: String, + #[tardis_entity(custom_type = "text")] pub ext: String, pub sk_need: bool, /// Whether dynamic sk \ @@ -69,82 +72,16 @@ pub struct Model { pub rel_rbum_item_id: String, #[index()] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Kind).not_null().string_len(127)) - .col(ColumnDef::new(Column::Supplier).not_null().string_len(127)) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::AkNote).not_null().string()) - .col(ColumnDef::new(Column::AkRule).not_null().string()) - .col(ColumnDef::new(Column::SkNote).not_null().string()) - .col(ColumnDef::new(Column::SkRule).not_null().string()) - .col(ColumnDef::new(Column::Ext).text()) - .col(ColumnDef::new(Column::SkNeed).not_null().boolean()) - .col(ColumnDef::new(Column::SkDynamic).not_null().boolean()) - .col(ColumnDef::new(Column::SkEncrypted).not_null().boolean()) - .col(ColumnDef::new(Column::Repeatable).not_null().boolean()) - .col(ColumnDef::new(Column::IsBasic).not_null().boolean()) - .col(ColumnDef::new(Column::IsAkRepeatable).not_null().boolean()) - .col(ColumnDef::new(Column::RestByKinds).not_null().string()) - .col(ColumnDef::new(Column::ExpireSec).not_null().big_integer()) - .col(ColumnDef::new(Column::SkLockCycleSec).not_null().integer()) - .col(ColumnDef::new(Column::SkLockErrTimes).not_null().small_integer()) - .col(ColumnDef::new(Column::SkLockDurationSec).not_null().integer()) - .col(ColumnDef::new(Column::CoexistNum).not_null().small_integer()) - .col(ColumnDef::new(Column::ConnUri).not_null().string()) - .col(ColumnDef::new(Column::RelRbumDomainId).not_null().string()) - .col(ColumnDef::new(Column::RelRbumItemId).not_null().string()) - .col(ColumnDef::new(Column::Status).not_null().small_integer()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_domain.rs b/backend/basic/src/rbum/domain/rbum_domain.rs index da1b38b82..9441fe7b4 100644 --- a/backend/basic/src/rbum/domain/rbum_domain.rs +++ b/backend/basic/src/rbum/domain/rbum_domain.rs @@ -5,7 +5,7 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisCreateIndex, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource domain model /// @@ -14,7 +14,7 @@ use tardis::TardisCreateIndex; /// /// E.g. All menu resources are provided by IAM components, and all IaaS resources are provided by CMDB components. /// IAM components and CMDB components are resource domains. -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_domain")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -30,64 +30,16 @@ pub struct Model { pub scope_level: i16, #[index] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Code).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - // With Scope - .col(ColumnDef::new(Column::ScopeLevel).not_null().small_integer()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_item.rs b/backend/basic/src/rbum/domain/rbum_item.rs index f85127c04..057eeb6a6 100644 --- a/backend/basic/src/rbum/domain/rbum_item.rs +++ b/backend/basic/src/rbum/domain/rbum_item.rs @@ -5,6 +5,7 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource model /// @@ -13,94 +14,37 @@ use tardis::db::sea_orm::*; /// /// Each resource corresponds to a unique uri, /// and the uri consists of `:///` -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_item")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: String, /// Resource code + #[index(index_id = "unique_id", unique)] pub code: String, pub name: String, /// Associated [resource kind](crate::rbum::domain::rbum_kind::Model) id + #[index(repeat(index_id = "unique_id", unique))] pub rel_rbum_kind_id: String, /// Associated [resource domain](crate::rbum::domain::rbum_domain::Model) id + #[index(repeat(index_id = "unique_id", unique))] pub rel_rbum_domain_id: String, pub scope_level: i16, + #[index] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, pub disabled: bool, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Code).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::RelRbumKindId).not_null().string()) - .col(ColumnDef::new(Column::RelRbumDomainId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - // With Scope - .col(ColumnDef::new(Column::ScopeLevel).not_null().small_integer()) - // With Status - .col(ColumnDef::new(Column::Disabled).not_null().boolean()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![ - Index::create().name(&format!("idx-{}-{}", Entity.table_name(), Column::OwnPaths.to_string())).table(Entity).col(Column::OwnPaths).to_owned(), - Index::create().name(&format!("idx-{}-{}", Entity.table_name(), Column::RelRbumKindId.to_string())).table(Entity).col(Column::RelRbumKindId).to_owned(), - Index::create().name(&format!("idx-{}-{}", Entity.table_name(), Column::RelRbumDomainId.to_string())).table(Entity).col(Column::RelRbumDomainId).to_owned(), - Index::create() - .name(&format!("idx-{}-{}", Entity.table_name(), Column::Code.to_string())) - .table(Entity) - .col(Column::Code) - .col(Column::RelRbumKindId) - .col(Column::RelRbumDomainId) - .unique() - .to_owned(), - ] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_item_attr.rs b/backend/basic/src/rbum/domain/rbum_item_attr.rs index e92d6deeb..b574b80cf 100644 --- a/backend/basic/src/rbum/domain/rbum_item_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_item_attr.rs @@ -5,10 +5,10 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisCreateIndex, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource extended attribute value model -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_item_attr")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -22,60 +22,16 @@ pub struct Model { #[index(index_id = "id", unique)] pub rel_rbum_kind_attr_id: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Value).not_null().string()) - .col(ColumnDef::new(Column::RelRbumItemId).not_null().string()) - .col(ColumnDef::new(Column::RelRbumKindAttrId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_kind.rs b/backend/basic/src/rbum/domain/rbum_kind.rs index d28ee2e89..a0dd94e8c 100644 --- a/backend/basic/src/rbum/domain/rbum_kind.rs +++ b/backend/basic/src/rbum/domain/rbum_kind.rs @@ -31,11 +31,15 @@ pub struct Model { pub scope_level: i16, #[index] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, pub create_time: chrono::DateTime, pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } diff --git a/backend/basic/src/rbum/domain/rbum_kind_attr.rs b/backend/basic/src/rbum/domain/rbum_kind_attr.rs index 3087d1f60..9886bba5e 100644 --- a/backend/basic/src/rbum/domain/rbum_kind_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_kind_attr.rs @@ -5,7 +5,7 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource kind extended attribute definition model /// @@ -23,7 +23,7 @@ use tardis::TardisCreateIndex; /// 6. before the resource object is saved, if secret = true and an attribute variable substitution in the url, call the url and return the corresponding value /// /// For security reasons, step 6 must be done by the server side. -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_kind_attr")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -79,24 +79,21 @@ pub struct Model { pub scope_level: i16, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - +impl Model { fn create_table_statement(db: DbBackend) -> TableCreateStatement { let mut builder = Table::create(); builder @@ -119,6 +116,7 @@ impl TardisActiveModel for ActiveModel { .col(ColumnDef::new(Column::Idx).not_null().boolean().default(false)) .col(ColumnDef::new(Column::DataType).not_null().string()) .col(ColumnDef::new(Column::WidgetType).not_null().string()) + // todo!() default .col(ColumnDef::new(Column::WidgetColumns).not_null().small_integer().default(1)) .col(ColumnDef::new(Column::DefaultValue).not_null().string().default("")) .col(ColumnDef::new(Column::DynDefaultValue).not_null().string().default("")) @@ -157,8 +155,3 @@ impl TardisActiveModel for ActiveModel { tardis_create_index_statement() } } - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_rel.rs b/backend/basic/src/rbum/domain/rbum_rel.rs index 67bb79601..4d13023e1 100644 --- a/backend/basic/src/rbum/domain/rbum_rel.rs +++ b/backend/basic/src/rbum/domain/rbum_rel.rs @@ -26,11 +26,15 @@ pub struct Model { /// E.g. the record from or to is in another service, to avoid remote calls, you can redundantly add the required information to this field. pub ext: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, pub create_time: chrono::DateTime, pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } diff --git a/backend/basic/src/rbum/domain/rbum_rel_attr.rs b/backend/basic/src/rbum/domain/rbum_rel_attr.rs index cb6072a1f..1233eddce 100644 --- a/backend/basic/src/rbum/domain/rbum_rel_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_rel_attr.rs @@ -32,11 +32,15 @@ pub struct Model { #[index] pub rel_rbum_rel_id: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, pub create_time: chrono::DateTime, pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } diff --git a/backend/basic/src/rbum/domain/rbum_rel_env.rs b/backend/basic/src/rbum/domain/rbum_rel_env.rs index 6be82f46d..fa757490d 100644 --- a/backend/basic/src/rbum/domain/rbum_rel_env.rs +++ b/backend/basic/src/rbum/domain/rbum_rel_env.rs @@ -23,11 +23,15 @@ pub struct Model { #[index] pub rel_rbum_rel_id: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, pub create_time: chrono::DateTime, pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } diff --git a/backend/basic/src/rbum/domain/rbum_set.rs b/backend/basic/src/rbum/domain/rbum_set.rs index 720577efa..24c72decb 100644 --- a/backend/basic/src/rbum/domain/rbum_set.rs +++ b/backend/basic/src/rbum/domain/rbum_set.rs @@ -30,11 +30,15 @@ pub struct Model { pub scope_level: i16, #[index] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, pub create_time: chrono::DateTime, pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, pub disabled: bool, diff --git a/backend/basic/src/rbum/domain/rbum_set_cate.rs b/backend/basic/src/rbum/domain/rbum_set_cate.rs index 13a86fe76..96132ec86 100644 --- a/backend/basic/src/rbum/domain/rbum_set_cate.rs +++ b/backend/basic/src/rbum/domain/rbum_set_cate.rs @@ -26,11 +26,15 @@ pub struct Model { pub scope_level: i16, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, pub create_time: chrono::DateTime, pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } diff --git a/backend/basic/src/rbum/domain/rbum_set_item.rs b/backend/basic/src/rbum/domain/rbum_set_item.rs index bcfe08e90..3e09218bc 100644 --- a/backend/basic/src/rbum/domain/rbum_set_item.rs +++ b/backend/basic/src/rbum/domain/rbum_set_item.rs @@ -23,11 +23,15 @@ pub struct Model { /// Associated [resource](crate::rbum::domain::rbum_item::Model) id pub rel_rbum_item_id: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, pub create_time: chrono::DateTime, pub update_time: chrono::DateTime, + #[fill_ctx] pub create_by: String, + #[fill_ctx(insert_only = false)] pub update_by: String, } From 8f10b2a4899a861db3529e5b1e0b6e4c3f64a46a Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Thu, 11 Apr 2024 09:31:09 +0000 Subject: [PATCH 02/10] update --- backend/basic/src/rbum/domain/rbum_kind.rs | 62 +-------------- .../basic/src/rbum/domain/rbum_kind_attr.rs | 1 + backend/basic/src/rbum/domain/rbum_rel.rs | 69 +++------------- .../basic/src/rbum/domain/rbum_rel_attr.rs | 59 +------------- backend/basic/src/rbum/domain/rbum_rel_env.rs | 57 +------------ backend/basic/src/rbum/domain/rbum_set.rs | 64 +-------------- .../basic/src/rbum/domain/rbum_set_cate.rs | 79 ++----------------- .../basic/src/rbum/domain/rbum_set_item.rs | 70 ++-------------- 8 files changed, 40 insertions(+), 421 deletions(-) diff --git a/backend/basic/src/rbum/domain/rbum_kind.rs b/backend/basic/src/rbum/domain/rbum_kind.rs index a0dd94e8c..440826a6a 100644 --- a/backend/basic/src/rbum/domain/rbum_kind.rs +++ b/backend/basic/src/rbum/domain/rbum_kind.rs @@ -5,14 +5,14 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource kind /// /// A resource kind is a set of common resources. \ /// E.g. `/tenant/**` , `/app/**` these are all APIs, and these are all API-kind resources; `/tenant/list` , /// `/tenant/detail#more` these are all menus, and these are all menu-kind resources. -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_kind")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -35,66 +35,12 @@ pub struct Model { pub own_paths: String, #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, #[fill_ctx] pub create_by: String, #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Code).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::Module).not_null().string()) - .col(ColumnDef::new(Column::ExtTableName).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - // With Scope - .col(ColumnDef::new(Column::ScopeLevel).not_null().small_integer()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_kind_attr.rs b/backend/basic/src/rbum/domain/rbum_kind_attr.rs index 9886bba5e..6f96053bb 100644 --- a/backend/basic/src/rbum/domain/rbum_kind_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_kind_attr.rs @@ -51,6 +51,7 @@ pub struct Model { pub data_type: String, /// Associated [resource kind](crate::rbum::rbum_enumeration::RbumWidgetTypeKind) pub widget_type: String, + #[tardis_entity(default_value = 1)] pub widget_columns: i16, pub default_value: String, /// Dynamic default value diff --git a/backend/basic/src/rbum/domain/rbum_rel.rs b/backend/basic/src/rbum/domain/rbum_rel.rs index 4d13023e1..554d43c4e 100644 --- a/backend/basic/src/rbum/domain/rbum_rel.rs +++ b/backend/basic/src/rbum/domain/rbum_rel.rs @@ -5,93 +5,42 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; - +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Relationship model -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_rel")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: String, /// Relationship label + #[index(index_id = "from_index", repeat(index_id = "to_index"))] pub tag: String, pub note: String, /// The [source kind](crate::rbum::rbum_enumeration::RbumRelFromKind) of the relationship + #[index(index_id = "from_index")] pub from_rbum_kind: i16, /// The source id of the relationship + #[index(index_id = "from_index")] pub from_rbum_id: String, /// The target resource id of the relationship + #[index(index_id = "to_index")] pub to_rbum_item_id: String, pub to_own_paths: String, /// Extended Information \ /// E.g. the record from or to is in another service, to avoid remote calls, you can redundantly add the required information to this field. pub ext: String, + #[index] #[fill_ctx(fill = "own_paths")] pub own_paths: String, #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, #[fill_ctx] pub create_by: String, #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Tag).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::FromRbumKind).not_null().small_integer()) - .col(ColumnDef::new(Column::FromRbumId).not_null().string()) - .col(ColumnDef::new(Column::ToRbumItemId).not_null().string()) - .col(ColumnDef::new(Column::ToOwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Ext).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![ - Index::create().name(&format!("idx-{}-{}", Entity.table_name(), Column::OwnPaths.to_string())).table(Entity).col(Column::OwnPaths).to_owned(), - Index::create().name(&format!("idx-{}-from", Entity.table_name())).table(Entity).col(Column::Tag).col(Column::FromRbumKind).col(Column::FromRbumId).to_owned(), - Index::create().name(&format!("idx-{}-to", Entity.table_name())).table(Entity).col(Column::Tag).col(Column::ToRbumItemId).to_owned(), - ] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_rel_attr.rs b/backend/basic/src/rbum/domain/rbum_rel_attr.rs index 1233eddce..4982c67a4 100644 --- a/backend/basic/src/rbum/domain/rbum_rel_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_rel_attr.rs @@ -5,12 +5,12 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Relationship attribute condition model /// /// This model is used to further qualify the conditions under which the relationship is established -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_rel_attr")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -36,63 +36,12 @@ pub struct Model { pub own_paths: String, #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, #[fill_ctx] pub create_by: String, #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::IsFrom).not_null().boolean()) - .col(ColumnDef::new(Column::Value).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::RecordOnly).not_null().boolean()) - .col(ColumnDef::new(Column::RelRbumKindAttrId).not_null().string()) - .col(ColumnDef::new(Column::RelRbumRelId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_rel_env.rs b/backend/basic/src/rbum/domain/rbum_rel_env.rs index fa757490d..a03a7fcca 100644 --- a/backend/basic/src/rbum/domain/rbum_rel_env.rs +++ b/backend/basic/src/rbum/domain/rbum_rel_env.rs @@ -5,12 +5,12 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Relationship environment condition model /// /// This model is used to further qualify the conditions under which the relationship is established -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_rel_env")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -27,61 +27,12 @@ pub struct Model { pub own_paths: String, #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, #[fill_ctx] pub create_by: String, #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Kind).not_null().small_integer()) - .col(ColumnDef::new(Column::Value1).not_null().string()) - .col(ColumnDef::new(Column::Value2).not_null().string()) - .col(ColumnDef::new(Column::RelRbumRelId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_set.rs b/backend/basic/src/rbum/domain/rbum_set.rs index 24c72decb..fbe7bff71 100644 --- a/backend/basic/src/rbum/domain/rbum_set.rs +++ b/backend/basic/src/rbum/domain/rbum_set.rs @@ -5,12 +5,12 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::TardisCreateIndex; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource set model /// /// Resource set is essentially a general tree structure processing model -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateIndex)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_set")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -34,7 +34,9 @@ pub struct Model { pub own_paths: String, #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, #[fill_ctx] pub create_by: String, @@ -43,61 +45,3 @@ pub struct Model { pub disabled: bool, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Code).not_null().string()) - .col(ColumnDef::new(Column::Kind).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::Ext).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - // With Scope - .col(ColumnDef::new(Column::ScopeLevel).not_null().small_integer()) - // With Status - .col(ColumnDef::new(Column::Disabled).not_null().boolean()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_set_cate.rs b/backend/basic/src/rbum/domain/rbum_set_cate.rs index 96132ec86..8c019563f 100644 --- a/backend/basic/src/rbum/domain/rbum_set_cate.rs +++ b/backend/basic/src/rbum/domain/rbum_set_cate.rs @@ -5,23 +5,26 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; - +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource set category model -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_set_cate")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: String, /// System (internal) code \ /// using regular hierarchical code to avoid recursive tree queries + #[index(index_id = "unique_sys_code", unique)] pub sys_code: String, /// Business code for custom + #[index(index_id = "bus_code")] pub bus_code: String, pub name: String, pub icon: String, pub sort: i64, pub ext: String, /// Associated [resource set](crate::rbum::domain::rbum_set::Model) id + #[index(index_id = "unique_sys_code", repeat(index_id = "bus_code"))] pub rel_rbum_set_id: String, pub scope_level: i16, @@ -30,80 +33,12 @@ pub struct Model { pub own_paths: String, #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, #[fill_ctx] pub create_by: String, #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::SysCode).not_null().string()) - .col(ColumnDef::new(Column::BusCode).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::Ext).not_null().string()) - .col(ColumnDef::new(Column::RelRbumSetId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - // With Scope - .col(ColumnDef::new(Column::ScopeLevel).not_null().small_integer()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![ - Index::create() - .name(&format!("idx-{}-{}-{}", Entity.table_name(), Column::RelRbumSetId.to_string(), Column::SysCode.to_string())) - .table(Entity) - .col(Column::RelRbumSetId) - .col(Column::SysCode) - .unique() - .to_owned(), - Index::create() - .name(&format!("idx-{}-{}-{}", Entity.table_name(), Column::RelRbumSetId.to_string(), Column::BusCode.to_string())) - .table(Entity) - .col(Column::RelRbumSetId) - .col(Column::BusCode) - .to_owned(), - ] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/basic/src/rbum/domain/rbum_set_item.rs b/backend/basic/src/rbum/domain/rbum_set_item.rs index 3e09218bc..4b1716ae6 100644 --- a/backend/basic/src/rbum/domain/rbum_set_item.rs +++ b/backend/basic/src/rbum/domain/rbum_set_item.rs @@ -5,11 +5,11 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; - +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource item model /// /// Used to bind resources to resource set categories -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "rbum_set_cate_item")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -17,81 +17,25 @@ pub struct Model { pub sort: i64, /// Associated [resource set](crate::rbum::domain::rbum_set::Model) id + #[index(index_id = "unique_index", unique)] pub rel_rbum_set_id: String, /// Associated [resource set category](crate::rbum::domain::rbum_set_cate::Model) sys_code + #[index(index_id = "unique_index")] pub rel_rbum_set_cate_code: String, /// Associated [resource](crate::rbum::domain::rbum_item::Model) id + #[index(repeat(index_id = "unique_index"))] pub rel_rbum_item_id: String, #[fill_ctx(fill = "own_paths")] pub own_paths: String, #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, #[fill_ctx] pub create_by: String, #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - self.create_by = Set(ctx.owner.to_string()); - } - self.update_by = Set(ctx.owner.to_string()); - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::RelRbumSetId).not_null().string()) - .col(ColumnDef::new(Column::RelRbumSetCateCode).not_null().string()) - .col(ColumnDef::new(Column::RelRbumItemId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![ - Index::create() - .name(&format!("idx-{}-{}", Entity.table_name(), Column::RelRbumSetId.to_string())) - .table(Entity) - .col(Column::RelRbumSetId) - .col(Column::RelRbumSetCateCode) - .col(Column::RelRbumItemId) - .unique() - .to_owned(), - Index::create().name(&format!("idx-{}-{}", Entity.table_name(), Column::RelRbumItemId.to_string())).table(Entity).col(Column::RelRbumItemId).to_owned(), - ] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} From 2ec1b0d3acfaa2ff201c50be3f63f0a967b37114 Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Thu, 11 Apr 2024 09:37:35 +0000 Subject: [PATCH 03/10] basic cargo fix --- backend/basic/src/helper/request_helper.rs | 8 +-- backend/basic/src/rbum/domain/rbum_cert.rs | 5 +- .../basic/src/rbum/domain/rbum_cert_conf.rs | 3 - backend/basic/src/rbum/domain/rbum_domain.rs | 5 +- backend/basic/src/rbum/domain/rbum_item.rs | 3 - .../basic/src/rbum/domain/rbum_item_attr.rs | 5 +- backend/basic/src/rbum/domain/rbum_kind.rs | 3 - .../basic/src/rbum/domain/rbum_kind_attr.rs | 65 ------------------- backend/basic/src/rbum/domain/rbum_rel.rs | 3 - .../basic/src/rbum/domain/rbum_rel_attr.rs | 3 - backend/basic/src/rbum/domain/rbum_rel_env.rs | 3 - backend/basic/src/rbum/domain/rbum_set.rs | 3 - .../basic/src/rbum/domain/rbum_set_cate.rs | 3 - .../basic/src/rbum/domain/rbum_set_item.rs | 3 - .../src/rbum/helper/rbum_scope_helper.rs | 2 +- backend/basic/src/rbum/serv/rbum_item_serv.rs | 4 +- backend/basic/tests/test_rbum_cert.rs | 2 +- backend/basic/tests/test_rbum_domain.rs | 2 +- backend/basic/tests/test_rbum_item.rs | 8 +-- backend/basic/tests/test_rbum_kind.rs | 4 +- backend/basic/tests/test_rbum_rel.rs | 54 +++++++-------- backend/basic/tests/test_rbum_set.rs | 6 +- 22 files changed, 47 insertions(+), 150 deletions(-) diff --git a/backend/basic/src/helper/request_helper.rs b/backend/basic/src/helper/request_helper.rs index 0dea9df63..f1bdcca86 100644 --- a/backend/basic/src/helper/request_helper.rs +++ b/backend/basic/src/helper/request_helper.rs @@ -37,14 +37,12 @@ pub async fn try_set_real_ip_from_req_to_ctx(request: &Request, ctx: &TardisCont pub fn parse_forwarded_ip(forwarded_value: &str) -> Option { forwarded_value .strip_prefix("Forwarded: ") - .map(|forwarded_value| { + .and_then(|forwarded_value| { forwarded_value - .split(";") + .split(';') .find(|part| part.trim().starts_with("for=")) - .map(|part| part.trim()[4..].split(",").next().map(|ip_str| IpAddr::from_str(ip_str).ok()).flatten()) - .flatten() + .and_then(|part| part.trim()[4..].split(',').next().and_then(|ip_str| IpAddr::from_str(ip_str).ok())) }) - .flatten() } /// Try to get real ip from request diff --git a/backend/basic/src/rbum/domain/rbum_cert.rs b/backend/basic/src/rbum/domain/rbum_cert.rs index a88901b16..17f730037 100644 --- a/backend/basic/src/rbum/domain/rbum_cert.rs +++ b/backend/basic/src/rbum/domain/rbum_cert.rs @@ -1,11 +1,8 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::{TardisCreateEntity, TardisCreateIndex, TardisEmptyBehavior, TardisEmptyRelation}; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Credential or authentication instance model /// diff --git a/backend/basic/src/rbum/domain/rbum_cert_conf.rs b/backend/basic/src/rbum/domain/rbum_cert_conf.rs index 388013aa0..c8aa3daca 100644 --- a/backend/basic/src/rbum/domain/rbum_cert_conf.rs +++ b/backend/basic/src/rbum/domain/rbum_cert_conf.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; diff --git a/backend/basic/src/rbum/domain/rbum_domain.rs b/backend/basic/src/rbum/domain/rbum_domain.rs index 9441fe7b4..6e2f6cc90 100644 --- a/backend/basic/src/rbum/domain/rbum_domain.rs +++ b/backend/basic/src/rbum/domain/rbum_domain.rs @@ -1,11 +1,8 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::{TardisCreateEntity, TardisCreateIndex, TardisEmptyBehavior, TardisEmptyRelation}; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource domain model /// diff --git a/backend/basic/src/rbum/domain/rbum_item.rs b/backend/basic/src/rbum/domain/rbum_item.rs index 057eeb6a6..963ff850a 100644 --- a/backend/basic/src/rbum/domain/rbum_item.rs +++ b/backend/basic/src/rbum/domain/rbum_item.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; diff --git a/backend/basic/src/rbum/domain/rbum_item_attr.rs b/backend/basic/src/rbum/domain/rbum_item_attr.rs index b574b80cf..8315b9d14 100644 --- a/backend/basic/src/rbum/domain/rbum_item_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_item_attr.rs @@ -1,11 +1,8 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; -use tardis::{TardisCreateEntity, TardisCreateIndex, TardisEmptyBehavior, TardisEmptyRelation}; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource extended attribute value model #[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] diff --git a/backend/basic/src/rbum/domain/rbum_kind.rs b/backend/basic/src/rbum/domain/rbum_kind.rs index 440826a6a..8d32a64bb 100644 --- a/backend/basic/src/rbum/domain/rbum_kind.rs +++ b/backend/basic/src/rbum/domain/rbum_kind.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; diff --git a/backend/basic/src/rbum/domain/rbum_kind_attr.rs b/backend/basic/src/rbum/domain/rbum_kind_attr.rs index 6f96053bb..352a13ef0 100644 --- a/backend/basic/src/rbum/domain/rbum_kind_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_kind_attr.rs @@ -1,6 +1,4 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; @@ -93,66 +91,3 @@ pub struct Model { #[fill_ctx(insert_only = false)] pub update_by: String, } - -impl Model { - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Module).not_null().string()) - .col(ColumnDef::new(Column::Label).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string().default("")) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::MainColumn).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::Position).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::Capacity).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::Hide).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::Secret).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::ShowByConds).not_null().string().default("")) - .col(ColumnDef::new(Column::Overload).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::Idx).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::DataType).not_null().string()) - .col(ColumnDef::new(Column::WidgetType).not_null().string()) - // todo!() default - .col(ColumnDef::new(Column::WidgetColumns).not_null().small_integer().default(1)) - .col(ColumnDef::new(Column::DefaultValue).not_null().string().default("")) - .col(ColumnDef::new(Column::DynDefaultValue).not_null().string().default("")) - .col(ColumnDef::new(Column::Options).not_null().text()) - .col(ColumnDef::new(Column::DynOptions).not_null().string().default("")) - .col(ColumnDef::new(Column::Required).not_null().boolean().default(false)) - .col(ColumnDef::new(Column::MinLength).not_null().integer()) - .col(ColumnDef::new(Column::MaxLength).not_null().integer()) - .col(ColumnDef::new(Column::ParentAttrName).not_null().string().default("")) - .col(ColumnDef::new(Column::Action).not_null().string().default("")) - .col(ColumnDef::new(Column::Ext).not_null().string().default("")) - .col(ColumnDef::new(Column::RelRbumKindId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - // With Scope - .col(ColumnDef::new(Column::ScopeLevel).not_null().small_integer()) - .col(ColumnDef::new(Column::CreateBy).not_null().string()) - .col(ColumnDef::new(Column::UpdateBy).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - tardis_create_index_statement() - } -} diff --git a/backend/basic/src/rbum/domain/rbum_rel.rs b/backend/basic/src/rbum/domain/rbum_rel.rs index 554d43c4e..e7126ccf6 100644 --- a/backend/basic/src/rbum/domain/rbum_rel.rs +++ b/backend/basic/src/rbum/domain/rbum_rel.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Relationship model diff --git a/backend/basic/src/rbum/domain/rbum_rel_attr.rs b/backend/basic/src/rbum/domain/rbum_rel_attr.rs index 4982c67a4..f1b43966f 100644 --- a/backend/basic/src/rbum/domain/rbum_rel_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_rel_attr.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; diff --git a/backend/basic/src/rbum/domain/rbum_rel_env.rs b/backend/basic/src/rbum/domain/rbum_rel_env.rs index a03a7fcca..a076a347c 100644 --- a/backend/basic/src/rbum/domain/rbum_rel_env.rs +++ b/backend/basic/src/rbum/domain/rbum_rel_env.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; diff --git a/backend/basic/src/rbum/domain/rbum_set.rs b/backend/basic/src/rbum/domain/rbum_set.rs index fbe7bff71..f713112a6 100644 --- a/backend/basic/src/rbum/domain/rbum_set.rs +++ b/backend/basic/src/rbum/domain/rbum_set.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; diff --git a/backend/basic/src/rbum/domain/rbum_set_cate.rs b/backend/basic/src/rbum/domain/rbum_set_cate.rs index 8c019563f..610b01557 100644 --- a/backend/basic/src/rbum/domain/rbum_set_cate.rs +++ b/backend/basic/src/rbum/domain/rbum_set_cate.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource set category model diff --git a/backend/basic/src/rbum/domain/rbum_set_item.rs b/backend/basic/src/rbum/domain/rbum_set_item.rs index 4b1716ae6..2bc498270 100644 --- a/backend/basic/src/rbum/domain/rbum_set_item.rs +++ b/backend/basic/src/rbum/domain/rbum_set_item.rs @@ -1,9 +1,6 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// Resource item model diff --git a/backend/basic/src/rbum/helper/rbum_scope_helper.rs b/backend/basic/src/rbum/helper/rbum_scope_helper.rs index 67544ce37..f8c704506 100644 --- a/backend/basic/src/rbum/helper/rbum_scope_helper.rs +++ b/backend/basic/src/rbum/helper/rbum_scope_helper.rs @@ -220,7 +220,7 @@ fn do_unsafe_fill_ctx(request: &tardis::web::poem::Request, f: F, funs: &Tard where F: FnOnce(TardisContext, &mut TardisContext), { - let bios_ctx = if let Some(bios_ctx) = request.header(&funs.rbum_head_key_bios_ctx()).or_else(|| request.header(&funs.rbum_head_key_bios_ctx().to_lowercase())) { + let bios_ctx = if let Some(bios_ctx) = request.header(&funs.rbum_head_key_bios_ctx()).or_else(|| request.header(funs.rbum_head_key_bios_ctx().to_lowercase())) { TardisFuns::json.str_to_obj::(&TardisFuns::crypto.base64.decode_to_string(bios_ctx)?)? } else if ctx.owner.is_empty() && ctx.ak.is_empty() && ctx.own_paths.is_empty() && ctx.roles.is_empty() && ctx.groups.is_empty() { return Err(TardisError::unauthorized( diff --git a/backend/basic/src/rbum/serv/rbum_item_serv.rs b/backend/basic/src/rbum/serv/rbum_item_serv.rs index dd761380e..d50f585ab 100644 --- a/backend/basic/src/rbum/serv/rbum_item_serv.rs +++ b/backend/basic/src/rbum/serv/rbum_item_serv.rs @@ -1207,7 +1207,7 @@ impl RbumItemAttrServ { ) .await?; } else { - Self::modify_rbum(exist_item_attr_ids.get(0).unwrap(), &mut RbumItemAttrModifyReq { value: column_val }, funs, ctx).await?; + Self::modify_rbum(exist_item_attr_ids.first().unwrap(), &mut RbumItemAttrModifyReq { value: column_val }, funs, ctx).await?; } } } @@ -1256,7 +1256,7 @@ impl RbumItemAttrServ { ) .await?; } else { - Self::modify_rbum(secret_item_attr_ids.get(0).unwrap(), &mut RbumItemAttrModifyReq { value: result }, funs, ctx).await?; + Self::modify_rbum(secret_item_attr_ids.first().unwrap(), &mut RbumItemAttrModifyReq { value: result }, funs, ctx).await?; } } } diff --git a/backend/basic/tests/test_rbum_cert.rs b/backend/basic/tests/test_rbum_cert.rs index fd670bf8d..16fa539ff 100644 --- a/backend/basic/tests/test_rbum_cert.rs +++ b/backend/basic/tests/test_rbum_cert.rs @@ -234,7 +234,7 @@ async fn test_rbum_cert_conf(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().name, "用户名+密码"); + assert_eq!(rbums.records.first().unwrap().name, "用户名+密码"); info!("【test_rbum_cert_conf】 : Test Delete : RbumCertConfServ::delete_rbum"); assert!(RbumCertConfServ::delete_rbum(&id, &funs, context).await.is_err()); diff --git a/backend/basic/tests/test_rbum_domain.rs b/backend/basic/tests/test_rbum_domain.rs index 5376ee5f4..6ebe48df3 100644 --- a/backend/basic/tests/test_rbum_domain.rs +++ b/backend/basic/tests/test_rbum_domain.rs @@ -69,7 +69,7 @@ pub async fn test(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().icon, "."); + assert_eq!(rbums.records.first().unwrap().icon, "."); info!("【test_rbum_domin】 : Test Delete : RbumDomainServ::delete_rbum"); RbumDomainServ::delete_rbum(&id, &funs, context).await?; diff --git a/backend/basic/tests/test_rbum_item.rs b/backend/basic/tests/test_rbum_item.rs index 2647c4fc1..f2e9ebd86 100644 --- a/backend/basic/tests/test_rbum_item.rs +++ b/backend/basic/tests/test_rbum_item.rs @@ -169,7 +169,7 @@ async fn test_rbum_item(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().name, "数据库实例1"); + assert_eq!(rbums.records.first().unwrap().name, "数据库实例1"); info!("【test_rbum_item】 : Test Delete : RbumItemServ::delete_rbum"); RbumItemServ::delete_rbum(&id, &funs, context).await?; @@ -336,7 +336,7 @@ async fn test_rbum_item_attr(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().value, "数据3"); + assert_eq!(rbums.records.first().unwrap().value, "数据3"); info!("【test_rbum_item_attr】 : Test Delete : RbumItemAttrServ::delete_rbum"); RbumItemAttrServ::delete_rbum(&item_attr_id, &funs, context).await?; @@ -567,7 +567,7 @@ async fn test_rbum_item_attr_has_main_table(context: &TardisContext) -> TardisRe ) .await?; assert_eq!(ext_values.len(), 1); - assert_eq!(ext_values.get(0).unwrap().value, "中国杭州"); + assert_eq!(ext_values.first().unwrap().value, "中国杭州"); let main_values = funs .db() @@ -608,7 +608,7 @@ async fn test_rbum_item_attr_has_main_table(context: &TardisContext) -> TardisRe ) .await?; assert_eq!(ext_values.len(), 1); - assert_eq!(ext_values.get(0).unwrap().value, "杭州"); + assert_eq!(ext_values.first().unwrap().value, "杭州"); let main_values = funs .db() diff --git a/backend/basic/tests/test_rbum_kind.rs b/backend/basic/tests/test_rbum_kind.rs index 18397944f..2a84f66df 100644 --- a/backend/basic/tests/test_rbum_kind.rs +++ b/backend/basic/tests/test_rbum_kind.rs @@ -155,7 +155,7 @@ async fn test_rbum_kind(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().name, "关系型数据库_new"); + assert_eq!(rbums.records.first().unwrap().name, "关系型数据库_new"); info!("【test_rbum_kind】 : Test Delete : RbumKindServ::delete_rbum"); RbumKindServ::delete_rbum(&id, &funs, context).await?; @@ -384,7 +384,7 @@ async fn test_rbum_kind_attr(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert!(rbums.records.get(0).unwrap().overload); + assert!(rbums.records.first().unwrap().overload); info!("【test_rbum_kind_attr】 : Test Delete : RbumKindAttrServ::delete_rbum"); RbumKindAttrServ::delete_rbum(&kind_attr_id, &funs, context).await?; diff --git a/backend/basic/tests/test_rbum_rel.rs b/backend/basic/tests/test_rbum_rel.rs index 14a61af9d..bdbc68a19 100644 --- a/backend/basic/tests/test_rbum_rel.rs +++ b/backend/basic/tests/test_rbum_rel.rs @@ -228,7 +228,7 @@ async fn test_rbum_rel(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().tag, "alloc"); + assert_eq!(rbums.records.first().unwrap().tag, "alloc"); info!("【test_rbum_rel】 : Test Delete : RbumRelServ::delete_rbum"); RbumRelServ::delete_rbum(&id, &funs, context).await?; @@ -651,9 +651,9 @@ async fn test_rbum_rel_attr(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert!(rbums.records.get(0).unwrap().is_from); - assert_eq!(rbums.records.get(0).unwrap().value, "tidb"); - assert_eq!(rbums.records.get(0).unwrap().name, "db_type"); + assert!(rbums.records.first().unwrap().is_from); + assert_eq!(rbums.records.first().unwrap().value, "tidb"); + assert_eq!(rbums.records.first().unwrap().name, "db_type"); info!("【test_rbum_rel_attr】 : Test Delete : RbumRelAttrServ::delete_rbum"); RbumRelAttrServ::delete_rbum(&id, &funs, context).await?; @@ -833,9 +833,9 @@ async fn test_rbum_rel_env(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().kind, RbumRelEnvKind::DatetimeRange); - assert_eq!(rbums.records.get(0).unwrap().value1, start_time); - assert_eq!(rbums.records.get(0).unwrap().value2, end_time); + assert_eq!(rbums.records.first().unwrap().kind, RbumRelEnvKind::DatetimeRange); + assert_eq!(rbums.records.first().unwrap().value1, start_time); + assert_eq!(rbums.records.first().unwrap().value2, end_time); info!("【test_rbum_rel_env】 : Test Delete : RbumRelEnvServ::delete_rbum"); RbumRelEnvServ::delete_rbum(&id, &funs, context).await?; @@ -1020,32 +1020,32 @@ async fn test_rbum_rel_use(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().rel.tag, "bind"); - assert_eq!(rbums.records.get(0).unwrap().rel.to_own_paths, context.own_paths.to_string()); - assert_eq!(rbums.records.get(0).unwrap().rel.own_paths, context.own_paths.to_string()); - assert_eq!(rbums.records.get(0).unwrap().attrs.len(), 1); - assert_eq!(rbums.records.get(0).unwrap().attrs.get(0).unwrap().value, "mysql"); - assert_eq!(rbums.records.get(0).unwrap().attrs.get(0).unwrap().name, "db_type"); - assert_eq!(rbums.records.get(0).unwrap().envs.len(), 1); - assert_eq!(rbums.records.get(0).unwrap().envs.get(0).unwrap().kind, RbumRelEnvKind::DatetimeRange); - assert_eq!(rbums.records.get(0).unwrap().envs.get(0).unwrap().value1, start_time); - assert_eq!(rbums.records.get(0).unwrap().envs.get(0).unwrap().value2, end_time); + assert_eq!(rbums.records.first().unwrap().rel.tag, "bind"); + assert_eq!(rbums.records.first().unwrap().rel.to_own_paths, context.own_paths.to_string()); + assert_eq!(rbums.records.first().unwrap().rel.own_paths, context.own_paths.to_string()); + assert_eq!(rbums.records.first().unwrap().attrs.len(), 1); + assert_eq!(rbums.records.first().unwrap().attrs.first().unwrap().value, "mysql"); + assert_eq!(rbums.records.first().unwrap().attrs.first().unwrap().name, "db_type"); + assert_eq!(rbums.records.first().unwrap().envs.len(), 1); + assert_eq!(rbums.records.first().unwrap().envs.first().unwrap().kind, RbumRelEnvKind::DatetimeRange); + assert_eq!(rbums.records.first().unwrap().envs.first().unwrap().value1, start_time); + assert_eq!(rbums.records.first().unwrap().envs.first().unwrap().value2, end_time); info!("【test_rbum_rel_use】 : Test Find To Rels : RbumRelServ::find_to_rels"); let rbums = RbumRelServ::paginate_to_rels("bind", item_account_a1_id.as_str(), 1, 10, None, None, &funs, context).await?; assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().rel.tag, "bind"); - assert_eq!(rbums.records.get(0).unwrap().rel.to_own_paths, context.own_paths.to_string()); - assert_eq!(rbums.records.get(0).unwrap().rel.own_paths, context.own_paths.as_str()); - assert_eq!(rbums.records.get(0).unwrap().attrs.len(), 1); - assert_eq!(rbums.records.get(0).unwrap().attrs.get(0).unwrap().value, "mysql"); - assert_eq!(rbums.records.get(0).unwrap().attrs.get(0).unwrap().name, "db_type"); - assert_eq!(rbums.records.get(0).unwrap().envs.len(), 1); - assert_eq!(rbums.records.get(0).unwrap().envs.get(0).unwrap().kind, RbumRelEnvKind::DatetimeRange); - assert_eq!(rbums.records.get(0).unwrap().envs.get(0).unwrap().value1, start_time); - assert_eq!(rbums.records.get(0).unwrap().envs.get(0).unwrap().value2, end_time); + assert_eq!(rbums.records.first().unwrap().rel.tag, "bind"); + assert_eq!(rbums.records.first().unwrap().rel.to_own_paths, context.own_paths.to_string()); + assert_eq!(rbums.records.first().unwrap().rel.own_paths, context.own_paths.as_str()); + assert_eq!(rbums.records.first().unwrap().attrs.len(), 1); + assert_eq!(rbums.records.first().unwrap().attrs.first().unwrap().value, "mysql"); + assert_eq!(rbums.records.first().unwrap().attrs.first().unwrap().name, "db_type"); + assert_eq!(rbums.records.first().unwrap().envs.len(), 1); + assert_eq!(rbums.records.first().unwrap().envs.first().unwrap().kind, RbumRelEnvKind::DatetimeRange); + assert_eq!(rbums.records.first().unwrap().envs.first().unwrap().value1, start_time); + assert_eq!(rbums.records.first().unwrap().envs.first().unwrap().value2, end_time); info!("【test_rbum_rel_use】 : Test Check Rel : RbumRelServ::check_rel"); assert!( diff --git a/backend/basic/tests/test_rbum_set.rs b/backend/basic/tests/test_rbum_set.rs index ed2859271..942370e72 100644 --- a/backend/basic/tests/test_rbum_set.rs +++ b/backend/basic/tests/test_rbum_set.rs @@ -74,7 +74,7 @@ async fn test_rbum_set(context: &TardisContext) -> TardisResult<()> { assert_eq!(rbums.page_number, 1); assert_eq!(rbums.page_size, 10); assert_eq!(rbums.total_size, 1); - assert_eq!(rbums.records.get(0).unwrap().name, "测试集合"); + assert_eq!(rbums.records.first().unwrap().name, "测试集合"); info!("【test_rbum_set】 : Test Delete : RbumSetServ::delete_rbum"); RbumSetServ::delete_rbum(&id, &funs, context).await?; @@ -993,8 +993,8 @@ async fn test_rbum_set_item(context: &TardisContext) -> TardisResult<()> { let set_paths = RbumSetItemServ::find_set_paths(&item_account_a1_id, &set_id, &funs, context).await?; assert_eq!(set_paths.len(), 1); assert_eq!(set_paths[0].len(), 2); - assert!(set_paths.get(0).unwrap().iter().any(|i| i.name == "l2")); - assert!(set_paths.get(0).unwrap().iter().any(|i| i.name == "l1")); + assert!(set_paths.first().unwrap().iter().any(|i| i.name == "l2")); + assert!(set_paths.first().unwrap().iter().any(|i| i.name == "l1")); info!("【test_rbum_set_item】 : Test Modify : RbumSetItemServ::modify_rbum"); RbumSetItemServ::modify_rbum(&id, &mut RbumSetItemModifyReq { sort: 10 }, &funs, context).await?; From 4819fffba008c24abaaecc5ba31e7011ade37752 Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Thu, 11 Apr 2024 09:50:46 +0000 Subject: [PATCH 04/10] update cargo.toml --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f3d59cdc6..e4d2291e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,9 +61,9 @@ run_script = { version = "0.10" } testcontainers-modules = { version = "0.3", features = ["redis"] } strum = { version = "0.26", features = ["derive"] } # tardis -tardis = { version = "0.1.0-rc.11" } +# tardis = { version = "0.1.0-rc.11" } # tardis = { path = "../tardis/tardis" } -# tardis = { git = "https://github.com/ideal-world/tardis.git", rev = "191f3ec" } +tardis = { git = "https://github.com/ideal-world/tardis.git", rev = "c121222" } #spacegate # spacegate-kernel = { git = "https://github.com/ideal-world/spacegate.git", rev = "f37a81a", features = [ From 7768561454c03cae3e1758b423192f0deeed2df3 Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Thu, 11 Apr 2024 10:17:35 +0000 Subject: [PATCH 05/10] update --- backend/basic/src/rbum/domain/rbum_cert_conf.rs | 1 - backend/basic/src/rbum/domain/rbum_kind_attr.rs | 1 - 2 files changed, 2 deletions(-) diff --git a/backend/basic/src/rbum/domain/rbum_cert_conf.rs b/backend/basic/src/rbum/domain/rbum_cert_conf.rs index 6e7de8a71..edde79866 100644 --- a/backend/basic/src/rbum/domain/rbum_cert_conf.rs +++ b/backend/basic/src/rbum/domain/rbum_cert_conf.rs @@ -99,7 +99,6 @@ pub struct Model { /// Such as database connection pool configuration. /// /// 比如数据库连接池配置。 - pub sk_rule: String, #[tardis_entity(custom_type = "text")] pub ext: String, /// Whether sk is required diff --git a/backend/basic/src/rbum/domain/rbum_kind_attr.rs b/backend/basic/src/rbum/domain/rbum_kind_attr.rs index 352a13ef0..315611f9a 100644 --- a/backend/basic/src/rbum/domain/rbum_kind_attr.rs +++ b/backend/basic/src/rbum/domain/rbum_kind_attr.rs @@ -1,7 +1,6 @@ use tardis::chrono::{self, Utc}; use tardis::db::sea_orm; use tardis::db::sea_orm::prelude::*; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; From 57246a62ffdb7bf8ed50f56d93ac0b1c74974b8b Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Mon, 15 Apr 2024 08:07:55 +0000 Subject: [PATCH 06/10] basic test passed --- Cargo.toml | 2 +- backend/basic/src/rbum/helper/rbum_event_helper.rs | 3 +++ backend/middlewares/flow/src/domain/flow_model.rs | 2 +- backend/middlewares/flow/src/domain/flow_state.rs | 2 +- backend/middlewares/flow/src/domain/flow_transition.rs | 2 +- backend/services/spacegate/Cargo.toml | 3 ++- 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e4d2291e4..78cb1fbec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,7 +63,7 @@ strum = { version = "0.26", features = ["derive"] } # tardis # tardis = { version = "0.1.0-rc.11" } # tardis = { path = "../tardis/tardis" } -tardis = { git = "https://github.com/ideal-world/tardis.git", rev = "c121222" } +tardis = { git = "https://github.com/ideal-world/tardis.git", rev = "694ff92" } #spacegate # spacegate-kernel = { git = "https://github.com/ideal-world/spacegate.git", rev = "f37a81a", features = [ diff --git a/backend/basic/src/rbum/helper/rbum_event_helper.rs b/backend/basic/src/rbum/helper/rbum_event_helper.rs index 51fb8406b..36bf32dcd 100644 --- a/backend/basic/src/rbum/helper/rbum_event_helper.rs +++ b/backend/basic/src/rbum/helper/rbum_event_helper.rs @@ -4,6 +4,7 @@ use std::future::Future; use serde::{Deserialize, Serialize}; use tardis::basic::dto::TardisContext; use tardis::basic::result::TardisResult; +#[cfg(feature = "with-mq")] use tardis::chrono::Utc; use tardis::{TardisFuns, TardisFunsInst}; @@ -18,6 +19,7 @@ pub async fn try_notifies(event_messages: Vec, funs: &Tardis Ok(()) } +#[allow(unused)] pub async fn try_notify<'a>(table_name: &str, operate: &str, record_id: &str, funs: &TardisFunsInst, ctx: &TardisContext) -> TardisResult { #[cfg(feature = "with-mq")] { @@ -44,6 +46,7 @@ pub async fn try_notify<'a>(table_name: &str, operate: &str, record_id: &str, fu } } +#[allow(unused)] pub async fn receive(fun: F, funs: &TardisFunsInst) -> TardisResult where F: Fn((HashMap, String)) -> T + Send + Sync + 'static, diff --git a/backend/middlewares/flow/src/domain/flow_model.rs b/backend/middlewares/flow/src/domain/flow_model.rs index e6381bd62..ae4af6aa7 100644 --- a/backend/middlewares/flow/src/domain/flow_model.rs +++ b/backend/middlewares/flow/src/domain/flow_model.rs @@ -102,6 +102,6 @@ pub struct Model { /// ``` // pub exchange_data_url: String, - #[fill_ctx(own_paths)] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, } diff --git a/backend/middlewares/flow/src/domain/flow_state.rs b/backend/middlewares/flow/src/domain/flow_state.rs index bfb6a2ffe..739aab888 100644 --- a/backend/middlewares/flow/src/domain/flow_state.rs +++ b/backend/middlewares/flow/src/domain/flow_state.rs @@ -75,6 +75,6 @@ pub struct Model { #[index] pub tags: String, - #[fill_ctx(own_paths)] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, } diff --git a/backend/middlewares/flow/src/domain/flow_transition.rs b/backend/middlewares/flow/src/domain/flow_transition.rs index 08548446e..f32c39683 100644 --- a/backend/middlewares/flow/src/domain/flow_transition.rs +++ b/backend/middlewares/flow/src/domain/flow_transition.rs @@ -109,7 +109,7 @@ pub struct Model { pub sort: i64, - #[fill_ctx(own_paths)] + #[fill_ctx(fill = "own_paths")] pub own_paths: String, /// Creation time / 创建时间 diff --git a/backend/services/spacegate/Cargo.toml b/backend/services/spacegate/Cargo.toml index 4b12309e5..d15eb5f8d 100644 --- a/backend/services/spacegate/Cargo.toml +++ b/backend/services/spacegate/Cargo.toml @@ -18,7 +18,8 @@ lazy_static.workspace = true spacegate-shell = { workspace = true, features = [ "k8s", "plugin-all", -# "ext-redis", + "ext-redis", + "ext-axum", "cache", ] } tardis = { workspace = true } From 0d7e7be84f4753a90fb9194bd89e0dbb19e17201 Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Mon, 15 Apr 2024 09:57:44 +0000 Subject: [PATCH 07/10] update --- .../src/rbum/helper/rbum_event_helper.rs | 1 + backend/basic/src/rbum/serv/rbum_crud_serv.rs | 1 + backend/basic/src/rbum/serv/rbum_item_serv.rs | 1 + .../supports/reach/src/domain/message_log.rs | 68 +++---------------- 4 files changed, 14 insertions(+), 57 deletions(-) diff --git a/backend/basic/src/rbum/helper/rbum_event_helper.rs b/backend/basic/src/rbum/helper/rbum_event_helper.rs index 36bf32dcd..291a61150 100644 --- a/backend/basic/src/rbum/helper/rbum_event_helper.rs +++ b/backend/basic/src/rbum/helper/rbum_event_helper.rs @@ -8,6 +8,7 @@ use tardis::basic::result::TardisResult; use tardis::chrono::Utc; use tardis::{TardisFuns, TardisFunsInst}; +#[cfg(feature = "with-mq")] use crate::rbum::rbum_config::RbumConfigApi; const NOTIFY_EVENT_IN_CTX_FLAG: &str = "notify"; diff --git a/backend/basic/src/rbum/serv/rbum_crud_serv.rs b/backend/basic/src/rbum/serv/rbum_crud_serv.rs index ff1b33074..a8d9f8138 100644 --- a/backend/basic/src/rbum/serv/rbum_crud_serv.rs +++ b/backend/basic/src/rbum/serv/rbum_crud_serv.rs @@ -19,6 +19,7 @@ use tardis::TardisFunsInst; use crate::rbum::domain::rbum_item; use crate::rbum::dto::rbum_filer_dto::RbumBasicFilterReq; use crate::rbum::helper::{rbum_event_helper, rbum_scope_helper}; +#[cfg(feature = "with-mq")] use crate::rbum::rbum_config::RbumConfigApi; lazy_static! { diff --git a/backend/basic/src/rbum/serv/rbum_item_serv.rs b/backend/basic/src/rbum/serv/rbum_item_serv.rs index 0c9b0c094..aa951e1cb 100644 --- a/backend/basic/src/rbum/serv/rbum_item_serv.rs +++ b/backend/basic/src/rbum/serv/rbum_item_serv.rs @@ -23,6 +23,7 @@ use crate::rbum::dto::rbum_item_dto::{RbumItemAddReq, RbumItemDetailResp, RbumIt use crate::rbum::dto::rbum_kind_attr_dto::RbumKindAttrSummaryResp; use crate::rbum::dto::rbum_rel_dto::{RbumRelAddReq, RbumRelFindReq}; use crate::rbum::helper::rbum_event_helper; +#[cfg(feature = "with-mq")] use crate::rbum::rbum_config::RbumConfigApi; use crate::rbum::rbum_enumeration::{RbumCertRelKind, RbumRelFromKind, RbumScopeLevelKind}; use crate::rbum::serv::rbum_cert_serv::{RbumCertConfServ, RbumCertServ}; diff --git a/backend/supports/reach/src/domain/message_log.rs b/backend/supports/reach/src/domain/message_log.rs index 918c2c60d..30840a7c5 100644 --- a/backend/supports/reach/src/domain/message_log.rs +++ b/backend/supports/reach/src/domain/message_log.rs @@ -1,29 +1,29 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, DateTime, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, Table, TableCreateStatement}; -use tardis::db::sea_orm::*; - use crate::dto::*; use crate::fill_by_add_req; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_msg_log")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] + #[fill_ctx] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, /// 关联接收人Id pub rel_account_id: String, @@ -36,6 +36,7 @@ pub struct Model { /// 结束时间 pub end_time: chrono::DateTime, /// 完成时间 + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub finish_time: Option>, /// 是否失败 pub failure: bool, @@ -89,50 +90,3 @@ impl From<&ReachMsgLogModifyReq> for ActiveModel { model } } -impl ActiveModelBehavior for ActiveModel {} - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - // Specific - .col(ColumnDef::new(Column::RelAccountId).not_null().string()) - .col(ColumnDef::new(Column::DndTime).not_null().string()) - .col(ColumnDef::new(Column::DndStrategy).not_null().string()) - .col(ColumnDef::new(Column::StartTime).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::EndTime).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::FinishTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::Failure).not_null().boolean()) - .col(ColumnDef::new(Column::FailMessage).not_null().string()) - .col(ColumnDef::new(Column::RelReachMessageId).not_null().string()) - // Basic - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } -} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} From 1cef4e55b0dbda379e342141baf781cf659b2e13 Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Tue, 16 Apr 2024 06:17:56 +0000 Subject: [PATCH 08/10] update tamp --- backend/supports/reach/src/domain/message.rs | 78 +++---------- .../reach/src/domain/message_signature.rs | 66 +++-------- .../reach/src/domain/message_template.rs | 103 +++++------------- .../reach/src/domain/reach_vcode_strategy.rs | 59 ++-------- .../reach/src/domain/trigger_global_config.rs | 67 ++---------- .../src/domain/trigger_instance_config.rs | 70 +++--------- .../reach/src/domain/trigger_scene.rs | 64 ++--------- 7 files changed, 101 insertions(+), 406 deletions(-) diff --git a/backend/supports/reach/src/domain/message.rs b/backend/supports/reach/src/domain/message.rs index d7adc0017..6113d6e9a 100644 --- a/backend/supports/reach/src/domain/message.rs +++ b/backend/supports/reach/src/domain/message.rs @@ -8,51 +8,52 @@ use tardis::db::sea_orm::*; use crate::dto::*; use crate::{fill_by_add_req, fill_by_mod_req}; - +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; /// 用户触达消息 -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_message")] pub struct Model { #[sea_orm(primary_key)] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "Char(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, /// 发件人,可随意填写,分号分隔 - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub from_res: String, /// 关联的触达通道 - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_channel: ReachChannelKind, /// 用户触达接收类型 - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub receive_kind: ReachReceiveKind, /// 接收主体,分号分隔 - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub to_res_ids: String, /// 用户触达签名Id - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_msg_signature_id: String, /// 用户触达模板Id - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_msg_template_id: String, /// 替换参数,例如:{name1:value1,name2:value2} - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub content_replace: String, /// 触达状态 - #[sea_orm(column_type = "Char(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub reach_status: ReachStatusKind, } -impl ActiveModelBehavior for ActiveModel {} impl From<&ReachMessageAddReq> for ActiveModel { fn from(value: &ReachMessageAddReq) -> Self { @@ -91,50 +92,3 @@ impl From<&ReachMessageModifyReq> for ActiveModel { model } } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - } - } - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string_len(255).default(String::default())) - .col(ColumnDef::new(Column::FromRes).not_null().string()) - .col(ColumnDef::new(Column::RelReachChannel).not_null().string()) - .col(ColumnDef::new(Column::ReceiveKind).not_null().string()) - .col(ColumnDef::new(Column::ToResIds).not_null().string()) - .col(ColumnDef::new(Column::RelReachMsgSignatureId).not_null().string()) - .col(ColumnDef::new(Column::RelReachMsgTemplateId).not_null().string()) - .col(ColumnDef::new(Column::ContentReplace).not_null().string()) - .col(ColumnDef::new(Column::ReachStatus).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/reach/src/domain/message_signature.rs b/backend/supports/reach/src/domain/message_signature.rs index 1010a88ef..466f22e74 100644 --- a/backend/supports/reach/src/domain/message_signature.rs +++ b/backend/supports/reach/src/domain/message_signature.rs @@ -8,38 +8,41 @@ use tardis::db::sea_orm::sea_query::{ColumnDef, Table, TableCreateStatement}; use tardis::db::sea_orm::*; use crate::fill_by_mod_req; - -#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_msg_signature")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, /// 名称 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub name: String, /// 说明 - #[sea_orm(column_type = "String(Some(2000))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub note: String, /// 内容 - #[sea_orm(column_type = "String(Some(2000))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub content: String, /// 来源 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub source: String, /// 关联的触达通道 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_channel: ReachChannelKind, } @@ -76,44 +79,3 @@ impl From<&ReachMsgSignatureModifyReq> for ActiveModel { model } } -impl ActiveModelBehavior for ActiveModel {} - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::Content).not_null().string()) - .col(ColumnDef::new(Column::Source).not_null().string()) - .col(ColumnDef::new(Column::RelReachChannel).not_null().string()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } -} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/reach/src/domain/message_template.rs b/backend/supports/reach/src/domain/message_template.rs index 20c7c09b6..c19f3c15c 100644 --- a/backend/supports/reach/src/domain/message_template.rs +++ b/backend/supports/reach/src/domain/message_template.rs @@ -3,42 +3,44 @@ use tardis::chrono::{DateTime, Utc}; use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, Table, TableCreateStatement}; -use tardis::db::sea_orm::*; - use crate::fill_by_mod_req; use crate::{dto::*, fill_by_add_req}; -#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +use tardis::db::sea_orm::sea_query::{ColumnDef, Table, TableCreateStatement}; +use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_msg_template")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, /// 资源作用级别 - #[sea_orm(column_name = "scope_level")] pub scope_level: Option, /// 编码 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub code: String, /// 名称 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub name: String, /// 说明 - #[sea_orm(column_type = "String(Some(2000))")] + #[tardis_entity(custom_type = "string", custom_len = "2000")] pub note: String, /// 图标 - #[sea_orm(column_type = "String(Some(1000))")] + #[tardis_entity(custom_type = "string", custom_len = "1000")] pub icon: String, /// 排序 #[sea_orm(column_type = "Integer")] @@ -50,40 +52,39 @@ pub struct Model { /// - name: 模板字段,对象名.字段名。对于值类型模板,name = x, x为字段名,对于引用类型模板,name = x.y.z, x、y为级联的对象,z为字段名 /// - required: 是否必须 /// - defaultValue: 默认值 - #[sea_orm(column_type = "Text")] + #[tardis_entity(custom_type = "text")] pub variables: String, /// 用户触达等级类型 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub level_kind: ReachLevelKind, /// 主题 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub topic: String, /// 内容 - #[sea_orm(column_type = "Text")] + #[tardis_entity(custom_type = "text")] pub content: String, /// 确认超时时间 - #[sea_orm(column_name = "timeout_sec")] pub timeout_sec: i32, /// 确认超时策略 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub timeout_strategy: ReachTimeoutStrategyKind, /// 关联的触达通道 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_channel: ReachChannelKind, /// NOTICE - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub kind: ReachTemplateKind, /// 用户触达验证码策略Id - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_verify_code_strategy_id: String, /// 第三方插件-模板Id - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub sms_template_id: String, /// 第三方插件-签名 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub sms_signature: String, /// 第三方插件-短信发送方的号码 - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub sms_from: String, } impl From<&ReachMessageTemplateAddReq> for ActiveModel { @@ -147,55 +148,3 @@ impl From<&ReachMessageTemplateModifyReq> for ActiveModel { active_model } } -impl ActiveModelBehavior for ActiveModel {} -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - } - } - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::ScopeLevel).small_integer()) - .col(ColumnDef::new(Column::Code).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().integer()) - .col(ColumnDef::new(Column::Disabled).not_null().boolean()) - .col(ColumnDef::new(Column::Variables).not_null().text()) - .col(ColumnDef::new(Column::LevelKind).not_null().string()) - .col(ColumnDef::new(Column::Topic).not_null().string()) - .col(ColumnDef::new(Column::Content).not_null().text()) - .col(ColumnDef::new(Column::TimeoutSec).not_null().integer()) - .col(ColumnDef::new(Column::TimeoutStrategy).not_null().string()) - .col(ColumnDef::new(Column::RelReachChannel).not_null().string()) - .col(ColumnDef::new(Column::Kind).not_null().string()) - .col(ColumnDef::new(Column::RelReachVerifyCodeStrategyId).not_null().string()) - .col(ColumnDef::new(Column::SmsTemplateId).not_null().string()) - .col(ColumnDef::new(Column::SmsSignature).not_null().string()) - .col(ColumnDef::new(Column::SmsFrom).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder - } -} -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/reach/src/domain/reach_vcode_strategy.rs b/backend/supports/reach/src/domain/reach_vcode_strategy.rs index 0ceceef01..36275fc7d 100644 --- a/backend/supports/reach/src/domain/reach_vcode_strategy.rs +++ b/backend/supports/reach/src/domain/reach_vcode_strategy.rs @@ -7,23 +7,25 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; - -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_vcode_strategy")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, #[sea_orm(column_type = "Integer")] pub max_error_times: i32, @@ -31,7 +33,7 @@ pub struct Model { pub expire_sec: i32, #[sea_orm(column_type = "Integer")] pub length: i32, - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_set_id: String, /// 资源作用级别 #[sea_orm(column_name = "scope_level")] @@ -73,46 +75,3 @@ impl From<&ReachVCodeStrategyModifyReq> for ActiveModel { model } } -impl ActiveModelBehavior for ActiveModel {} -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.owner = Set(ctx.owner.to_string()); - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::MaxErrorTimes).not_null().integer().default(1)) - .col(ColumnDef::new(Column::ExpireSec).not_null().integer().default(30)) - .col(ColumnDef::new(Column::Length).not_null().integer().default(0)) - .col(ColumnDef::new(Column::RelReachSetId).not_null().string_len(255)) - .col(ColumnDef::new(Column::ScopeLevel).small_integer()); - - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder - } - - fn create_index_statement() -> Vec { - vec![] - } -} -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/reach/src/domain/trigger_global_config.rs b/backend/supports/reach/src/domain/trigger_global_config.rs index 35e6d0e04..01fa9a097 100644 --- a/backend/supports/reach/src/domain/trigger_global_config.rs +++ b/backend/supports/reach/src/domain/trigger_global_config.rs @@ -8,40 +8,40 @@ use tardis::db::sea_orm; use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; - -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_trigger_global_config")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, /// 关联的触发场景id - #[sea_orm(column_type = "String(Some(512))")] + #[tardis_entity(custom_type = "string", custom_len = "512")] pub rel_reach_trigger_scene_id: String, /// 关联的触达通道 - #[sea_orm(column_type = "String(Some(512))")] + #[tardis_entity(custom_type = "string", custom_len = "512")] pub rel_reach_channel: ReachChannelKind, /// 用户触达消息签名Id - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_msg_signature_id: String, /// 用户触达消息模板Id - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub rel_reach_msg_template_id: String, } -impl ActiveModelBehavior for ActiveModel {} - impl From<&ReachTriggerGlobalConfigAddReq> for ActiveModel { fn from(value: &ReachTriggerGlobalConfigAddReq) -> Self { let mut model = ActiveModel { @@ -74,46 +74,3 @@ impl From<&ReachTriggerGlobalConfigModifyReq> for ActiveModel { model } } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.owner = Set(ctx.owner.to_string()); - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::RelReachTriggerSceneId).not_null().string_len(512)) - .col(ColumnDef::new(Column::RelReachChannel).not_null().string_len(512)) - .col(ColumnDef::new(Column::RelReachMsgSignatureId).not_null().string_len(255)) - .col(ColumnDef::new(Column::RelReachMsgTemplateId).not_null().string_len(255)); - - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/reach/src/domain/trigger_instance_config.rs b/backend/supports/reach/src/domain/trigger_instance_config.rs index 18db36de5..eb393a11e 100644 --- a/backend/supports/reach/src/domain/trigger_instance_config.rs +++ b/backend/supports/reach/src/domain/trigger_instance_config.rs @@ -5,46 +5,46 @@ use tardis::basic::dto::TardisContext; use tardis::chrono::{self, DateTime, Utc}; use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; - use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_trigger_instance_config")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, - #[sea_orm(column_type = "String(Some(512))")] + #[tardis_entity(custom_type = "string", custom_len = "512")] /// 关联的触发场景id pub rel_reach_trigger_scene_id: String, - #[sea_orm(column_type = "String(Some(512))")] + #[tardis_entity(custom_type = "string", custom_len = "512")] /// 关联的触达通道 pub rel_reach_channel: ReachChannelKind, - #[sea_orm(column_type = "String(Some(512))")] + #[tardis_entity(custom_type = "string", custom_len = "512")] /// 关联资源项id pub rel_item_id: String, - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] /// 接收组编码 pub receive_group_code: String, - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "255")] /// 接收组名称 pub receive_group_name: String, } -impl ActiveModelBehavior for ActiveModel {} - impl From<&ReachTriggerInstanceConfigAddReq> for ActiveModel { fn from(value: &ReachTriggerInstanceConfigAddReq) -> Self { let mut model = ActiveModel { @@ -79,47 +79,3 @@ impl From<&ReachTriggerInstanceConfigModifyReq> for ActiveModel { model } } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.owner = Set(ctx.owner.to_string()); - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::RelReachTriggerSceneId).not_null().string_len(512)) - .col(ColumnDef::new(Column::RelReachChannel).not_null().string_len(512)) - .col(ColumnDef::new(Column::RelItemId).not_null().string_len(512)) - .col(ColumnDef::new(Column::ReceiveGroupCode).not_null().string_len(255)) - .col(ColumnDef::new(Column::ReceiveGroupName).not_null().string_len(255)); - - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/reach/src/domain/trigger_scene.rs b/backend/supports/reach/src/domain/trigger_scene.rs index 179a71029..0f5618129 100644 --- a/backend/supports/reach/src/domain/trigger_scene.rs +++ b/backend/supports/reach/src/domain/trigger_scene.rs @@ -5,40 +5,40 @@ use tardis::basic::dto::TardisContext; use tardis::chrono::{self, DateTime, Utc}; use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; - use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "reach_trigger_scene")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: Nanoid, /// 所有者路径 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx(fill = "own_paths")] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub own_paths: String, /// 所有者 - #[sea_orm(column_type = "String(Some(255))")] + #[fill_ctx] + #[tardis_entity(custom_type = "string", custom_len = "255")] pub owner: String, /// 创建时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: DateTime, /// 更新时间 - #[sea_orm(column_type = "Timestamp")] + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: DateTime, - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "225")] /// 编码 pub code: String, - #[sea_orm(column_type = "String(Some(255))")] + #[tardis_entity(custom_type = "string", custom_len = "225")] /// 名称 pub name: String, - #[sea_orm(column_type = "String(Some(2000))")] + #[tardis_entity(custom_type = "string", custom_len = "2000")] /// 父场景ID pub pid: Option, } -impl ActiveModelBehavior for ActiveModel {} - impl From<&ReachTriggerSceneAddReq> for ActiveModel { fn from(value: &ReachTriggerSceneAddReq) -> Self { let mut model = ActiveModel { @@ -68,45 +68,3 @@ impl From<&ReachTriggerSceneModifyReq> for ActiveModel { model } } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.owner = Set(ctx.owner.to_string()); - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()) - .col(ColumnDef::new(Column::Code).not_null().string_len(255)) - .col(ColumnDef::new(Column::Name).not_null().string_len(255)) - .col(ColumnDef::new(Column::Pid).not_null().string_len(2000)); - - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} From 41193787a5bca962fc8637b5e3f17808e9a98de3 Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Tue, 16 Apr 2024 07:16:37 +0000 Subject: [PATCH 09/10] update --- backend/supports/reach/src/domain/message.rs | 1 + backend/supports/reach/src/domain/reach_vcode_strategy.rs | 1 + backend/supports/reach/src/domain/trigger_global_config.rs | 1 + backend/supports/reach/src/domain/trigger_instance_config.rs | 1 + backend/supports/reach/src/domain/trigger_scene.rs | 3 ++- 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/supports/reach/src/domain/message.rs b/backend/supports/reach/src/domain/message.rs index 6113d6e9a..7bcdbe0d3 100644 --- a/backend/supports/reach/src/domain/message.rs +++ b/backend/supports/reach/src/domain/message.rs @@ -14,6 +14,7 @@ use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; #[sea_orm(table_name = "reach_message")] pub struct Model { #[sea_orm(primary_key)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 #[fill_ctx(fill = "own_paths")] diff --git a/backend/supports/reach/src/domain/reach_vcode_strategy.rs b/backend/supports/reach/src/domain/reach_vcode_strategy.rs index 365a38a95..2791d32c7 100644 --- a/backend/supports/reach/src/domain/reach_vcode_strategy.rs +++ b/backend/supports/reach/src/domain/reach_vcode_strategy.rs @@ -12,6 +12,7 @@ use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; #[sea_orm(table_name = "reach_vcode_strategy")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 #[fill_ctx(fill = "own_paths")] diff --git a/backend/supports/reach/src/domain/trigger_global_config.rs b/backend/supports/reach/src/domain/trigger_global_config.rs index 01fa9a097..910e5ad33 100644 --- a/backend/supports/reach/src/domain/trigger_global_config.rs +++ b/backend/supports/reach/src/domain/trigger_global_config.rs @@ -13,6 +13,7 @@ use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; #[sea_orm(table_name = "reach_trigger_global_config")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 #[fill_ctx(fill = "own_paths")] diff --git a/backend/supports/reach/src/domain/trigger_instance_config.rs b/backend/supports/reach/src/domain/trigger_instance_config.rs index eb393a11e..0d8af1f73 100644 --- a/backend/supports/reach/src/domain/trigger_instance_config.rs +++ b/backend/supports/reach/src/domain/trigger_instance_config.rs @@ -13,6 +13,7 @@ use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; #[sea_orm(table_name = "reach_trigger_instance_config")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 #[fill_ctx(fill = "own_paths")] diff --git a/backend/supports/reach/src/domain/trigger_scene.rs b/backend/supports/reach/src/domain/trigger_scene.rs index 0f5618129..125e8022d 100644 --- a/backend/supports/reach/src/domain/trigger_scene.rs +++ b/backend/supports/reach/src/domain/trigger_scene.rs @@ -13,6 +13,7 @@ use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; #[sea_orm(table_name = "reach_trigger_scene")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] + #[tardis_entity(custom_type = "string")] pub id: Nanoid, /// 所有者路径 #[fill_ctx(fill = "own_paths")] @@ -34,7 +35,7 @@ pub struct Model { #[tardis_entity(custom_type = "string", custom_len = "225")] /// 名称 pub name: String, - #[tardis_entity(custom_type = "string", custom_len = "2000")] + #[tardis_entity(custom_len = "2000")] /// 父场景ID pub pid: Option, } From c3487cab8bb25b497da57ca1edacd5ce95ef711d Mon Sep 17 00:00:00 2001 From: RWDai <27391645+RWDai@users.noreply.github.com> Date: Tue, 16 Apr 2024 07:38:58 +0000 Subject: [PATCH 10/10] update iam domain --- .../iam/src/basic/domain/iam_account.rs | 64 ++----------------- .../supports/iam/src/basic/domain/iam_app.rs | 41 +----------- .../iam/src/basic/domain/iam_config.rs | 60 ++--------------- .../supports/iam/src/basic/domain/iam_res.rs | 50 ++------------- .../supports/iam/src/basic/domain/iam_role.rs | 43 +------------ .../iam/src/basic/domain/iam_tenant.rs | 42 +----------- 6 files changed, 26 insertions(+), 274 deletions(-) diff --git a/backend/supports/iam/src/basic/domain/iam_account.rs b/backend/supports/iam/src/basic/domain/iam_account.rs index dffb30672..3a0d44209 100644 --- a/backend/supports/iam/src/basic/domain/iam_account.rs +++ b/backend/supports/iam/src/basic/domain/iam_account.rs @@ -1,11 +1,9 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "iam_account")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -19,8 +17,11 @@ pub struct Model { /// [data type Kind](crate::iam_enumeration::IamAccountLockStateKind) pub lock_status: i16, /// Expanded fields with index / 索引扩展字段 idx 1-3 + #[index] pub ext1_idx: String, + #[index] pub ext2_idx: String, + #[index] pub ext3_idx: String, /// Expanded fields / 普通扩展字段 4-9 pub ext4: String, @@ -29,60 +30,9 @@ pub struct Model { pub ext7: String, pub ext8: String, pub ext9: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub effective_time: chrono::DateTime, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Status).not_null().small_integer()) - .col(ColumnDef::new(Column::Temporary).not_null().boolean()) - .col(ColumnDef::new(Column::LockStatus).not_null().small_integer()) - .col(ColumnDef::new(Column::Ext1Idx).not_null().string()) - .col(ColumnDef::new(Column::Ext2Idx).not_null().string()) - .col(ColumnDef::new(Column::Ext3Idx).not_null().string()) - .col(ColumnDef::new(Column::Ext4).not_null().string()) - .col(ColumnDef::new(Column::Ext5).not_null().string()) - .col(ColumnDef::new(Column::Ext6).not_null().string()) - .col(ColumnDef::new(Column::Ext7).not_null().string()) - .col(ColumnDef::new(Column::Ext8).not_null().string()) - .col(ColumnDef::new(Column::Ext9).not_null().string()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()); - if db == DatabaseBackend::Postgres { - builder.col(ColumnDef::new(Column::EffectiveTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else if db == DatabaseBackend::MySql { - builder - .col(ColumnDef::new(Column::EffectiveTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs"); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![ - Index::create().name(&format!("idx-{}-idx1", Entity.table_name())).table(Entity).col(Column::Ext1Idx).to_owned(), - Index::create().name(&format!("idx-{}-idx2", Entity.table_name())).table(Entity).col(Column::Ext2Idx).to_owned(), - Index::create().name(&format!("idx-{}-idx3", Entity.table_name())).table(Entity).col(Column::Ext3Idx).to_owned(), - ] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/iam/src/basic/domain/iam_app.rs b/backend/supports/iam/src/basic/domain/iam_app.rs index 2e87662ac..e37798cd0 100644 --- a/backend/supports/iam/src/basic/domain/iam_app.rs +++ b/backend/supports/iam/src/basic/domain/iam_app.rs @@ -1,10 +1,7 @@ -use tardis::basic::dto::TardisContext; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; - -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "iam_app")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -14,38 +11,6 @@ pub struct Model { // 联系号码 pub contact_phone: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::ContactPhone).not_null().string()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()); - if db == DatabaseBackend::MySql { - builder.engine("InnoDB").character_set("utf8mb4").collate("utf8mb4_0900_as_cs"); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/iam/src/basic/domain/iam_config.rs b/backend/supports/iam/src/basic/domain/iam_config.rs index 0f4497129..928e41417 100644 --- a/backend/supports/iam/src/basic/domain/iam_config.rs +++ b/backend/supports/iam/src/basic/domain/iam_config.rs @@ -1,11 +1,9 @@ -use tardis::basic::dto::TardisContext; use tardis::chrono::{self, Utc}; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "iam_config")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -21,58 +19,12 @@ pub struct Model { pub ext: String, pub rel_item_id: String, pub disabled: bool, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, + #[fill_ctx] pub owner: String, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub create_time: chrono::DateTime, + #[sea_orm(extra = "DEFAULT CURRENT_TIMESTAMP")] pub update_time: chrono::DateTime, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - self.owner = Set(ctx.owner.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::Code).not_null().string()) - .col(ColumnDef::new(Column::Name).not_null().string()) - .col(ColumnDef::new(Column::DataType).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::Disabled).not_null().boolean()) - .col(ColumnDef::new(Column::Value1).not_null().string()) - .col(ColumnDef::new(Column::Value2).not_null().string()) - .col(ColumnDef::new(Column::Ext).not_null().string()) - .col(ColumnDef::new(Column::RelItemId).not_null().string()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()) - .col(ColumnDef::new(Column::Owner).not_null().string()); - if db == DatabaseBackend::Postgres { - builder - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp_with_time_zone()); - } else { - builder - .engine("InnoDB") - .character_set("utf8mb4") - .collate("utf8mb4_0900_as_cs") - .col(ColumnDef::new(Column::CreateTime).extra("DEFAULT CURRENT_TIMESTAMP".to_string()).timestamp()) - .col(ColumnDef::new(Column::UpdateTime).extra("DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP".to_string()).timestamp()); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/iam/src/basic/domain/iam_res.rs b/backend/supports/iam/src/basic/domain/iam_res.rs index 2a180a5a9..1ee8e9328 100644 --- a/backend/supports/iam/src/basic/domain/iam_res.rs +++ b/backend/supports/iam/src/basic/domain/iam_res.rs @@ -1,14 +1,13 @@ -use tardis::basic::dto::TardisContext; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, Index, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "iam_res")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] pub id: String, + #[index] pub kind: i16, pub icon: String, pub sort: i64, @@ -31,47 +30,6 @@ pub struct Model { pub ext: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Kind).not_null().small_integer()) - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::Method).not_null().string()) - .col(ColumnDef::new(Column::Hide).not_null().boolean()) - .col(ColumnDef::new(Column::Action).not_null().string()) - .col(ColumnDef::new(Column::CryptoReq).not_null().boolean()) - .col(ColumnDef::new(Column::CryptoResp).not_null().boolean()) - .col(ColumnDef::new(Column::DoubleAuth).not_null().boolean()) - .col(ColumnDef::new(Column::DoubleAuthMsg).not_null().string()) - .col(ColumnDef::new(Column::NeedLogin).not_null().boolean()) - .col(ColumnDef::new(Column::Ext).not_null().string()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()); - if db == DatabaseBackend::MySql { - builder.engine("InnoDB").character_set("utf8mb4").collate("utf8mb4_0900_as_cs"); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![Index::create().name(&format!("idx-{}-{}", Entity.table_name(), Column::Kind.to_string())).table(Entity).col(Column::Kind).to_owned()] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/iam/src/basic/domain/iam_role.rs b/backend/supports/iam/src/basic/domain/iam_role.rs index 772927f9c..fa20fe11a 100644 --- a/backend/supports/iam/src/basic/domain/iam_role.rs +++ b/backend/supports/iam/src/basic/domain/iam_role.rs @@ -1,10 +1,8 @@ -use tardis::basic::dto::TardisContext; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "iam_role")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -18,41 +16,6 @@ pub struct Model { pub in_embed: bool, pub extend_role_id: String, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Kind).not_null().small_integer()) - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::InBase).not_null().boolean()) - .col(ColumnDef::new(Column::InEmbed).not_null().boolean()) - .col(ColumnDef::new(Column::ExtendRoleId).not_null().string()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()); - if db == DatabaseBackend::MySql { - builder.engine("InnoDB").character_set("utf8mb4").collate("utf8mb4_0900_as_cs"); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} diff --git a/backend/supports/iam/src/basic/domain/iam_tenant.rs b/backend/supports/iam/src/basic/domain/iam_tenant.rs index 6b352fcad..cf6b49ec9 100644 --- a/backend/supports/iam/src/basic/domain/iam_tenant.rs +++ b/backend/supports/iam/src/basic/domain/iam_tenant.rs @@ -1,10 +1,8 @@ -use tardis::basic::dto::TardisContext; -use tardis::db::reldb_client::TardisActiveModel; use tardis::db::sea_orm; -use tardis::db::sea_orm::sea_query::{ColumnDef, IndexCreateStatement, Table, TableCreateStatement}; use tardis::db::sea_orm::*; +use tardis::{TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation}; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel)] +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, TardisCreateEntity, TardisEmptyBehavior, TardisEmptyRelation)] #[sea_orm(table_name = "iam_tenant")] pub struct Model { #[sea_orm(primary_key, auto_increment = false)] @@ -15,40 +13,6 @@ pub struct Model { pub note: String, pub account_self_reg: bool, + #[fill_ctx(fill = "own_paths")] pub own_paths: String, } - -impl TardisActiveModel for ActiveModel { - fn fill_ctx(&mut self, ctx: &TardisContext, is_insert: bool) { - if is_insert { - self.own_paths = Set(ctx.own_paths.to_string()); - } - } - - fn create_table_statement(db: DbBackend) -> TableCreateStatement { - let mut builder = Table::create(); - builder - .table(Entity.table_ref()) - .if_not_exists() - .col(ColumnDef::new(Column::Id).not_null().string().primary_key()) - .col(ColumnDef::new(Column::Icon).not_null().string()) - .col(ColumnDef::new(Column::Sort).not_null().big_integer()) - .col(ColumnDef::new(Column::ContactPhone).not_null().string()) - .col(ColumnDef::new(Column::Note).not_null().string()) - .col(ColumnDef::new(Column::AccountSelfReg).not_null().boolean()) - .col(ColumnDef::new(Column::OwnPaths).not_null().string()); - if db == DatabaseBackend::MySql { - builder.engine("InnoDB").character_set("utf8mb4").collate("utf8mb4_0900_as_cs"); - } - builder.to_owned() - } - - fn create_index_statement() -> Vec { - vec![] - } -} - -impl ActiveModelBehavior for ActiveModel {} - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {}