@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_persistence.adoc[]" as repo.RepoObject_persistence << U >> {
  - **target_RepoObject_guid** : (uniqueidentifier)
  - has_history : (bit)
  - has_history_columns : (bit)
  history_schema_name : (nvarchar(128))
  history_table_name : (nvarchar(128))
  - is_persistence_check_duplicate_per_pk : (bit)
  - is_persistence_check_for_empty_source : (bit)
  - is_persistence_delete_changed : (bit)
  - is_persistence_delete_missing : (bit)
  - is_persistence_insert : (bit)
  - is_persistence_merge_delete_missing : (bit)
  - is_persistence_merge_insert : (bit)
  - is_persistence_merge_update_changed : (bit)
  - is_persistence_persist_source : (bit)
  - is_persistence_truncate : (bit)
  - is_persistence_update_changed : (bit)
  source_filter : (nvarchar(4000))
  source_RepoObject_guid : (uniqueidentifier)
  source_RepoObject_name : (nvarchar(128))
  target_filter : (nvarchar(4000))
  ~ is_persistence : (bit)
  ~ temporal_type : (tinyint)
  --
}

entity "puml-link:dhw:sqldb:repo.repoobject_persistence_objectnames.adoc[]" as repo.RepoObject_persistence_ObjectNames << V >> {
  - has_history : (bit)
  - has_history_columns : (bit)
  history_schema_name : (nvarchar(128))
  history_table_name : (nvarchar(128))
  is_persistence : (bit)
  - is_persistence_check_for_empty_source : (bit)
  - is_persistence_delete_changed : (bit)
  - is_persistence_delete_missing : (bit)
  - is_persistence_insert : (bit)
  - is_persistence_truncate : (bit)
  - is_persistence_update_changed : (bit)
  is_repo_managed_t : (bit)
  - RepoObject_name_t : (nvarchar(128))
  - RepoObject_schema_name_t : (nvarchar(128))
  - RepoObject_type_t : (char(2))
  source_RepoObject_guid : (uniqueidentifier)
  SysObject_name_s : (nvarchar(128))
  SysObject_schema_name_s : (nvarchar(128))
  SysObject_type_s : (char(2))
  - target_RepoObject_guid : (uniqueidentifier)
  --
}

repo.RepoObject <.. repo.RepoObject_persistence_ObjectNames
repo.RepoObject_persistence <.. repo.RepoObject_persistence_ObjectNames
"repo.RepoObject::is_repo_managed" <-- "repo.RepoObject_persistence_ObjectNames::is_repo_managed_t"
"repo.RepoObject::RepoObject_name" <-- "repo.RepoObject_persistence_ObjectNames::RepoObject_name_t"
"repo.RepoObject::RepoObject_schema_name" <-- "repo.RepoObject_persistence_ObjectNames::RepoObject_schema_name_t"
"repo.RepoObject::RepoObject_type" <-- "repo.RepoObject_persistence_ObjectNames::RepoObject_type_t"
"repo.RepoObject::SysObject_name" <-- "repo.RepoObject_persistence_ObjectNames::SysObject_name_s"
"repo.RepoObject::SysObject_schema_name" <-- "repo.RepoObject_persistence_ObjectNames::SysObject_schema_name_s"
"repo.RepoObject::SysObject_type" <-- "repo.RepoObject_persistence_ObjectNames::SysObject_type_s"
"repo.RepoObject_persistence::has_history" <-- "repo.RepoObject_persistence_ObjectNames::has_history"
"repo.RepoObject_persistence::has_history_columns" <-- "repo.RepoObject_persistence_ObjectNames::has_history_columns"
"repo.RepoObject_persistence::history_schema_name" <-- "repo.RepoObject_persistence_ObjectNames::history_schema_name"
"repo.RepoObject_persistence::history_table_name" <-- "repo.RepoObject_persistence_ObjectNames::history_table_name"
"repo.RepoObject_persistence::is_persistence" <-- "repo.RepoObject_persistence_ObjectNames::is_persistence"
"repo.RepoObject_persistence::is_persistence_check_for_empty_source" <-- "repo.RepoObject_persistence_ObjectNames::is_persistence_check_for_empty_source"
"repo.RepoObject_persistence::is_persistence_delete_changed" <-- "repo.RepoObject_persistence_ObjectNames::is_persistence_delete_changed"
"repo.RepoObject_persistence::is_persistence_delete_missing" <-- "repo.RepoObject_persistence_ObjectNames::is_persistence_delete_missing"
"repo.RepoObject_persistence::is_persistence_insert" <-- "repo.RepoObject_persistence_ObjectNames::is_persistence_insert"
"repo.RepoObject_persistence::is_persistence_truncate" <-- "repo.RepoObject_persistence_ObjectNames::is_persistence_truncate"
"repo.RepoObject_persistence::is_persistence_update_changed" <-- "repo.RepoObject_persistence_ObjectNames::is_persistence_update_changed"
"repo.RepoObject_persistence::source_RepoObject_guid" <-- "repo.RepoObject_persistence_ObjectNames::source_RepoObject_guid"
"repo.RepoObject_persistence::target_RepoObject_guid" <-- "repo.RepoObject_persistence_ObjectNames::target_RepoObject_guid"footer The diagram is interactive and contains links.
@enduml

