@startuml
left to right direction
'top to bottom direction
hide circle
'avoide "." issues:
set namespaceSeparator none


skinparam class {
  BackgroundColor White
  BackgroundColor<<FN>> Yellow
  BackgroundColor<<FS>> Yellow
  BackgroundColor<<FT>> LightGray
  BackgroundColor<<IF>> Yellow
  BackgroundColor<<IS>> Yellow
  BackgroundColor<<P>> Aqua
  BackgroundColor<<PC>> Aqua
  BackgroundColor<<SN>> Yellow
  BackgroundColor<<SO>> SlateBlue
  BackgroundColor<<TF>> LightGray
  BackgroundColor<<TR>> Tomato
  BackgroundColor<<U>> White
  BackgroundColor<<V>> WhiteSmoke
  BackgroundColor<<X>> Aqua
  BackgroundColor<<external>> AliceBlue
}


entity "puml-link:dhw:sqldb:repo.repoobject.adoc[]" as repo.RepoObject << U >> {
  - **RepoObject_guid** : (uniqueidentifier)
  --
  external_AntoraComponent : (nvarchar(128))
  external_AntoraModule : (nvarchar(128))
  has_execution_plan_issue : (bit)
  has_get_referenced_issue : (bit)
  Inheritance_Source_fullname : (nvarchar(261))
  Inheritance_StringAggSeparatorSql : (nvarchar(4000))
  InheritanceDefinition : (nvarchar(4000))
  InheritanceType : (tinyint)
  - is_DocsExclude : (bit)
  - is_external : (bit)
  is_repo_managed : (bit)
  is_required_ObjectMerge : (bit)
  - is_ssas : (bit)
  is_SysObject_missing : (bit)
  - modify_dt : (datetime)
  pk_index_guid : (uniqueidentifier)
  pk_IndexPatternColumnName_new : (nvarchar(4000))
  Repo_history_table_guid : (uniqueidentifier)
  Repo_temporal_type : (tinyint)
  - RepoObject_name : (nvarchar(128))
  RepoObject_Referencing_Count : (int)
  - RepoObject_schema_name : (nvarchar(128))
  - RepoObject_type : (char(2))
  SysObject_id : (int)
  SysObject_modify_date : (datetime)
  - SysObject_name : (nvarchar(128))
  - SysObject_parent_object_id : (int)
  - SysObject_schema_name : (nvarchar(128))
  SysObject_type : (char(2))
  ~ has_different_sys_names : (bit)
  # is_RepoObject_name_uniqueidentifier : (int)
  # is_SysObject_name_uniqueidentifier : (int)
  ~ node_id : (bigint)
  # RepoObject_fullname : (nvarchar(261))
  # RepoObject_fullname2 : (nvarchar(257))
  # SysObject_fullname : (nvarchar(261))
  # SysObject_fullname2 : (nvarchar(257))
  ~ SysObject_query_sql : (nvarchar(406))
  # usp_persistence_fullname2 : (nvarchar(269))
  # usp_persistence_name : (nvarchar(140))
  --
  --
}

entity "puml-link:dhw:sqldb:repo.repoobject_external_src.adoc[]" as repo.RepoObject_external_src << V >> {
  - **RepoObject_guid** : (uniqueidentifier)
  --
  - external_AntoraComponent : (nvarchar(128))
  - external_AntoraModule : (nvarchar(128))
  - is_external : (int)
  - is_repo_managed : (int)
  - RepoObject_name : (nvarchar(128))
  - RepoObject_schema_name : (nvarchar(128))
  - RepoObject_type : (varchar(1))
  - SysObject_name : (nvarchar(128))
  - SysObject_schema_name : (nvarchar(128))
  - SysObject_type : (varchar(1))
  --
  --
}

entity "puml-link:dhw:sqldb:repo.repoobject_external_tgt.adoc[]" as repo.RepoObject_external_tgt << V >> {
  - **RepoObject_guid** : (uniqueidentifier)
  --
  - external_AntoraComponent : (nvarchar(128))
  - external_AntoraModule : (nvarchar(128))
  has_execution_plan_issue : (bit)
  has_get_referenced_issue : (bit)
  Inheritance_StringAggSeparatorSql : (nvarchar(4000))
  InheritanceDefinition : (nvarchar(4000))
  InheritanceType : (tinyint)
  - is_external : (int)
  - is_repo_managed : (int)
  is_required_ObjectMerge : (bit)
  - is_ssas : (bit)
  is_SysObject_missing : (bit)
  - modify_dt : (datetime)
  pk_index_guid : (uniqueidentifier)
  pk_IndexPatternColumnName_new : (nvarchar(4000))
  Repo_history_table_guid : (uniqueidentifier)
  Repo_temporal_type : (tinyint)
  - RepoObject_name : (nvarchar(128))
  RepoObject_Referencing_Count : (int)
  - RepoObject_schema_name : (nvarchar(128))
  - RepoObject_type : (varchar(1))
  SysObject_id : (int)
  SysObject_modify_date : (datetime)
  - SysObject_name : (nvarchar(128))
  - SysObject_parent_object_id : (int)
  - SysObject_schema_name : (nvarchar(128))
  - SysObject_type : (varchar(1))
  --
  --
}

entity "puml-link:dhw:sqldb:repo.repoobjectcolumn_external_tgt.adoc[]" as repo.RepoObjectColumn_external_tgt << V >> {
  - **RepoObjectColumn_guid** : (uniqueidentifier)
  --
  Inheritance_StringAggSeparatorSql : (nvarchar(4000))
  InheritanceDefinition : (nvarchar(4000))
  InheritanceType : (tinyint)
  is_persistence_no_check : (bit)
  is_persistence_no_include : (bit)
  is_persistence_no_update : (bit)
  is_query_plan_expression : (bit)
  is_required_ColumnMerge : (bit)
  - is_SysObjectColumn_missing : (int)
  persistence_source_RepoObjectColumn_guid : (uniqueidentifier)
  Referencing_Count : (int)
  Repo_default_definition : (nvarchar(max))
  Repo_default_is_system_named : (bit)
  Repo_default_name : (nvarchar(128))
  Repo_definition : (nvarchar(max))
  - Repo_generated_always_type : (tinyint)
  Repo_graph_type : (int)
  Repo_increment_value : (sql_variant)
  - Repo_is_computed : (bit)
  - Repo_is_identity : (bit)
  Repo_is_nullable : (bit)
  Repo_is_persisted : (bit)
  Repo_seed_value : (sql_variant)
  Repo_user_type_fullname : (nvarchar(128))
  Repo_user_type_name : (nvarchar(128))
  Repo_uses_database_collation : (bit)
  RepoObject_guid : (uniqueidentifier)
  RepoObjectColumn_column_id : (int)
  - RepoObjectColumn_name : (nvarchar(128))
  SysObjectColumn_column_id : (int)
  - SysObjectColumn_name : (nvarchar(128))
  --
  --
}

entity "puml-link:dhw:sqldb:repo.usp_persist_repoobject_external_tgt.adoc[]" as repo.usp_PERSIST_RepoObject_external_tgt << P >> {
  --
  --
  --
}

repo.RepoObject <.. repo.RepoObject_external_tgt
repo.RepoObject_external_src <.. repo.RepoObject_external_tgt
repo.RepoObject_external_tgt <.. repo.usp_PERSIST_RepoObject_external_tgt
repo.RepoObject_external_tgt <.. repo.RepoObject
repo.RepoObject_external_tgt <.. repo.RepoObjectColumn_external_tgt
repo.RepoObjectColumn_external_tgt <.. repo.RepoObject_external_tgt
"repo.RepoObject::external_AntoraComponent" <-- "repo.RepoObject_external_tgt::external_AntoraComponent"
"repo.RepoObject::external_AntoraModule" <-- "repo.RepoObject_external_tgt::external_AntoraModule"
"repo.RepoObject::has_execution_plan_issue" <-- "repo.RepoObject_external_tgt::has_execution_plan_issue"
"repo.RepoObject::has_get_referenced_issue" <-- "repo.RepoObject_external_tgt::has_get_referenced_issue"
"repo.RepoObject::Inheritance_StringAggSeparatorSql" <-- "repo.RepoObject_external_tgt::Inheritance_StringAggSeparatorSql"
"repo.RepoObject::InheritanceDefinition" <-- "repo.RepoObject_external_tgt::InheritanceDefinition"
"repo.RepoObject::InheritanceType" <-- "repo.RepoObject_external_tgt::InheritanceType"
"repo.RepoObject::is_external" <-- "repo.RepoObject_external_tgt::is_external"
"repo.RepoObject::is_repo_managed" <-- "repo.RepoObject_external_tgt::is_repo_managed"
"repo.RepoObject::is_required_ObjectMerge" <-- "repo.RepoObject_external_tgt::is_required_ObjectMerge"
"repo.RepoObject::is_ssas" <-- "repo.RepoObject_external_tgt::is_ssas"
"repo.RepoObject::is_SysObject_missing" <-- "repo.RepoObject_external_tgt::is_SysObject_missing"
"repo.RepoObject::modify_dt" <-- "repo.RepoObject_external_tgt::modify_dt"
"repo.RepoObject::pk_index_guid" <-- "repo.RepoObject_external_tgt::pk_index_guid"
"repo.RepoObject::pk_IndexPatternColumnName_new" <-- "repo.RepoObject_external_tgt::pk_IndexPatternColumnName_new"
"repo.RepoObject::Repo_history_table_guid" <-- "repo.RepoObject_external_tgt::Repo_history_table_guid"
"repo.RepoObject::Repo_temporal_type" <-- "repo.RepoObject_external_tgt::Repo_temporal_type"
"repo.RepoObject::RepoObject_guid" <-- "repo.RepoObject_external_tgt::RepoObject_guid"
"repo.RepoObject::RepoObject_name" <-- "repo.RepoObject_external_tgt::RepoObject_name"
"repo.RepoObject::RepoObject_Referencing_Count" <-- "repo.RepoObject_external_tgt::RepoObject_Referencing_Count"
"repo.RepoObject::RepoObject_schema_name" <-- "repo.RepoObject_external_tgt::RepoObject_schema_name"
"repo.RepoObject::RepoObject_type" <-- "repo.RepoObject_external_tgt::RepoObject_type"
"repo.RepoObject::SysObject_id" <-- "repo.RepoObject_external_tgt::SysObject_id"
"repo.RepoObject::SysObject_modify_date" <-- "repo.RepoObject_external_tgt::SysObject_modify_date"
"repo.RepoObject::SysObject_name" <-- "repo.RepoObject_external_tgt::SysObject_name"
"repo.RepoObject::SysObject_parent_object_id" <-- "repo.RepoObject_external_tgt::SysObject_parent_object_id"
"repo.RepoObject::SysObject_schema_name" <-- "repo.RepoObject_external_tgt::SysObject_schema_name"
"repo.RepoObject::SysObject_type" <-- "repo.RepoObject_external_tgt::SysObject_type"
"repo.RepoObject_external_src::external_AntoraComponent" <-- "repo.RepoObject_external_tgt::external_AntoraComponent"
"repo.RepoObject_external_src::external_AntoraModule" <-- "repo.RepoObject_external_tgt::external_AntoraModule"
"repo.RepoObject_external_src::is_external" <-- "repo.RepoObject_external_tgt::is_external"
"repo.RepoObject_external_src::is_repo_managed" <-- "repo.RepoObject_external_tgt::is_repo_managed"
"repo.RepoObject_external_src::RepoObject_guid" <-- "repo.RepoObject_external_tgt::RepoObject_guid"
"repo.RepoObject_external_src::RepoObject_name" <-- "repo.RepoObject_external_tgt::RepoObject_name"
"repo.RepoObject_external_src::RepoObject_schema_name" <-- "repo.RepoObject_external_tgt::RepoObject_schema_name"
"repo.RepoObject_external_src::RepoObject_type" <-- "repo.RepoObject_external_tgt::RepoObject_type"
"repo.RepoObject_external_src::SysObject_name" <-- "repo.RepoObject_external_tgt::SysObject_name"
"repo.RepoObject_external_src::SysObject_schema_name" <-- "repo.RepoObject_external_tgt::SysObject_schema_name"
"repo.RepoObject_external_src::SysObject_type" <-- "repo.RepoObject_external_tgt::SysObject_type"
@enduml

