diff --git a/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc b/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc index 34b2db9573..a5661b074d 100644 --- a/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc +++ b/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc @@ -1,20 +1,17 @@ -= createTable extension += _createTable_ extension include::platform:ROOT:partial$templates/document-attributes/arch-set-en.adoc[] include::platform:ROOT:partial$admonitions/language-en.adoc[] -== General description +== Overview -The `createTable` tag required for creating tables in the DB is standard for Liquibase, but in *liquibase-ddm-ext*, _Platform_-specific parameters processing is added. +The `createTable` tag, which is required for creating tables in a database, is standard for Liquibase. However, in *liquibase-ddm-ext*, additional parameters specific to the _Platform_ are handled. -== Liquibase scheme +== Liquibase schema -//Зберігається у одній схемі з іншими стандартними тегами Liquibase, у офіційній https://www.liquibase.org/xml/ns/dbchangelog/[документації] (наразі використовується версія 4.15) -It is stored in one scheme with other standard Liquibase tags, in the official https://www.liquibase.org/xml/ns/dbchangelog/[documentation] (currently, version 4.15 is used) - -//Атрибути, специфічні для *liquibase-ddm-ext*: -*liquibase-ddm-ext*-specific attributes: +It is stored in the same schema as other standard Liquibase tags, according to the official https://www.liquibase.org/xml/ns/dbchangelog/[documentation] (currently using version 4.15). +Attributes specific to *liquibase-ddm-ext*: [source, xml] ---- @@ -25,8 +22,8 @@ It is stored in one scheme with other standard Liquibase tags, in the official h ---- -//== Приклад використання -== Usage example +== Example usage + [source, xml] ---- @@ -47,66 +44,54 @@ It is stored in one scheme with other standard Liquibase tags, in the official h - + ---- -//== Опис параметрів -== Parameters description - -//Параметри для основного тегу - - - -//// -[cols="2,2,6"] -|=== -| Назва параметру | Можливі значення | Опис -| *historyFlag* | true | створює для вказаної таблиці відповідну історичну з суфіксом _hst, в яку записуються усі зміни у записах таблиці -| *bulkLoad* | true/false | для модифікації API згенерованих сервісів, визначає, чи буде згенерований ендпоінт, що дозволяє транзакційно зберігати декілька сутностей в одному запиті -| *readMode* | sync/async | для модифікації API згенерованих сервісів, визначає,як буде відбуватись операція читання даних, синхронно чи асинхронно (синхронно - на рівні _registry-rest_api_, асинхронно - шляхом rest-api-> _registry-kafka-api_ -> rest-api) -| *isObject* | true/false | визначає таблицю як об'єкт (додається зв'язок з таблицею _subject_) -|=== -//// +== Parameter description +Parameters for the main `ext:createTable` tag:: ++ [cols="2,2,6"] |=== -| Parameter name | Allowed values | Description -| *historyFlag* | true | for the selected table, this parameter creates a corresponding historical table with _hst suffix, where all table changes are logged -| *bulkLoad* | true/false | defines if the endpoint, which allows for the transactional storing of several entities in one request, will be generated for the modification of generated services API -| *readMode* | sync/async | for the modification of generated services API, defines how the data reading will be performed, synchronously or asynchronously (sync - on the _registry-rest_api_ level, async - via rest-api-> _registry-kafka-api_ -> rest-api) -| *isObject* | true/false | defines a table as an object (connection with the _subject_ table is added) +| Parameter name | Possible values | description +| `historyFlag` | true | Creates a corresponding history table for the specified table with the suffix `_hst`, where all record changes are stored. +| `bulkLoad` | true/false | Modifies the generated service API to determine if a transaction-safe endpoint will be generated, allowing multiple entities to be saved in a single request. +| `isObject` | true/false | Defines the table as an object (adds a link to the _subject_ table). |=== - - -//Параметри для вкладених тегів *column* - - - -//// ++ +[TIP] +==== +You can find more details about parameter usage on the following pages: + +* xref:registry-develop:data-modeling/data/physical-model/liquibase-ddm-ext.adoc#createTable[Table Creation: _historyFlag_] +* xref:registry-develop:data-modeling/data/physical-model/liquibase-ddm-ext.adoc#bulk-load[Attribute _bulkLoad_] +* xref:registry-develop:study-project/study-tasks/task-1-registry-db-modeling.adoc#is-object[Attribute _isObject_] +==== + +Parameters for nested `column` tags:: ++ [cols="2,2,6"] |=== -| Назва атрибуту (name) | Можливі значення (value) | Опис -| *classify* | private/confidential | класифікує дані в колонці як персональні -| *autoGenerate* | Патерн для генерації значень у колонці (наприклад, _АА-{dd-MM-yyyy}-{SEQ}_) | для генерації унікальних значень у колонку за вказаним патерном +| Attribute Name (name) | Possible Values (value) | Description +| `classify` | `private`/`confidential` | Classifies the data in the column as personal. +| `autoGenerate` | Pattern for generating values in the column (e.g., _AA-{dd-MM-yyyy}-{SEQ}_) | Generates unique values in the column according to the specified pattern. |=== -//// ++ +[TIP] +==== +You can find more details about parameter usage on the following pages: -[cols="2,2,6"] -|=== -| Attribute name | Allowed values | Description -| *classify* | private/confidential | classifies data in a column as personal -| *autoGenerate* | A pattern for the value generation in a column (for example, _АА-{dd-MM-yyyy}-{SEQ}_) | for the generation of unique values in the column with a defined pattern -|=== +* xref:registry-develop:study-project/study-tasks/task-1-registry-db-modeling.adoc#ext-classify[Tag _ext:classify_] +* xref:registry-develop:data-modeling/data/physical-model/auto-generate-number.adoc[] +==== -//== Згенеровані запити до БД -== Generated requests to the DB +== Generated database queries -//Запити згенеровані для таблиці, наведеної у прикладі -Requests, generated for the table from the example +The following queries are generated for the table in the example: [source, sql] ---- CREATE TABLE registry.pd_processing_consent_hst (consent_id UUID NOT NULL, consent_date TIMESTAMP WITH TIME ZONE NOT NULL, person_gender TYPE_GENDER NOT NULL, person_full_name TEXT NOT NULL, person_pass_number TEXT NOT NULL, auto_generated_number TEXT NOT NULL, ddm_created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL, ddm_created_by TEXT NOT NULL, ddm_dml_op CHAR(1) NOT NULL, ddm_system_id UUID NOT NULL, ddm_application_id UUID NOT NULL, ddm_business_process_id UUID, ddm_business_process_definition_id TEXT, ddm_business_process_instance_id TEXT, ddm_business_activity TEXT, ddm_business_activity_instance_id TEXT, ddm_digital_sign TEXT, ddm_digital_sign_derived TEXT, ddm_digital_sign_checksum TEXT, ddm_digital_sign_derived_checksum TEXT, CONSTRAINT pk_pd_processing_consent PRIMARY KEY (consent_id), CONSTRAINT ui_pd_processing_consent_hst UNIQUE (consent_id, ddm_created_at)); @@ -127,10 +112,9 @@ CREATE SEQUENCE IF NOT EXISTS pd_processing_consent_auto_generated_number_seq IN GRANT USAGE ON SEQUENCE pd_processing_consent_auto_generated_number_seq TO application_role; -insert into ddm_liquibase_metadata(change_type, change_name, attribute_name, attribute_value) values ('autoGenerate', 'pd_processing_consent', 'auto_generated_number', 'АА-{DDMMYYYY}-{SEQ}'); +insert into ddm_liquibase_metadata(change_type, change_name, attribute_name, attribute_value) values ('autoGenerate', 'pd_processing_consent', 'auto_generated_number', 'AA-{DDMMYYYY}-{SEQ}'); insert into ddm_liquibase_metadata(change_type, change_name, attribute_name, attribute_value) values ('bulkLoad', 'pd_processing_consent', 'bulkLoad', 'true'); INSERT INTO public.ddm_db_changelog (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('table pd_processing_consent', 'registry owner', 'main-liquibase.xml', NOW(), 55, '8:1d833a79f2d827609a61ac1df5354bd4', 'createTable tableName=pd_processing_consent', 'CREATE TABLE pd_processing_consent', 'EXECUTED', NULL, NULL, '4.5.0', '7604867906'); - ---- \ No newline at end of file diff --git a/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc b/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc index e76275bf5d..aecb687af0 100644 --- a/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc +++ b/docs/en/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc @@ -1,4 +1,4 @@ -= liquibase-ddm-ext library += Library _liquibase-ddm-ext_ include::platform:ROOT:partial$templates/document-attributes/arch-set-en.adoc[] include::platform:ROOT:partial$admonitions/language-en.adoc[] @@ -7,98 +7,41 @@ include::platform:ROOT:partial$admonitions/language-en.adoc[] We use https://docs.liquibase.com/home.html[Liquibase] to create a registry physical data model for PostgreSQL. -//Liquibase за замовчуванням підтримує функціональність для розгортання та версіонування об'єктів в базі даних, тобто створення або видалення таблиць, створення зв'язків між цими таблицями, створення views та налаштування обмежень (constraints) тощо. By default, Liquibase supports objects deployment and versioning in DB, meaning the creation/deletion of tables, creation of connections between these tables, creation of views, configuration of constraints, etc. -//Для цього Liquibase має власний набір конструкцій -- https://docs.liquibase.com/change-types/home.html[**change types**], кожна з яких визначає певну версію змін до БД, а формується набором XML-тегів. Наприклад, ``, ``, тощо. -For this purpose Liquibase has a number of constructions -- https://docs.liquibase.com/change-types/home.html[**change types**], each one defining a certain version of changes to the DB, and is formed with XML-tags. For example, ``, ``, etc. +For this purpose, Liquibase has a number of constructions -- https://docs.liquibase.com/change-types/home.html[**change types**], each one defining a certain version of changes to the DB, and is formed with XML-tags. For example, ``, ``, etc. -//Оскільки в рамках Платформи реєстрів Liquibase використовується як єдиний інструмент для роботи з фізичною моделлю даних в PostgreSQL, то його стандартної функціональності не достатньо для покриття всіх сценаріїв роботи з регламентом реєстру. Within the Registry Platform, Liquibase is used as the sole instrument for operations with physical data model in PostgreSQL, and its standard functionality is insufficient to cover all the possible scenarios of work with registry regulations. -//З огляду на це, було розроблено: For this reason, the following solutions have been developed: -//- liquibase схему _liquibase-ext-schema_, яка розширює набір стандартних liquibase тегів та атрибутів, новими, специфічними для *Платформи* -//- бібліотеку розширень Liquibase _liquibase-ddm-ext_, що містить програмну обробку XML тегів та атрибутів,доданих у _liquibase-ext-schema_, а також модифікує існуючу поведінку для тегів та атрибутів, що присутні за замовчуванням -- _liquibase-ext-schema_ Liquibase scheme that expands the standard Liquibase tags and attributes list with new *Platform*-specific ones -- _liquibase-ddm-ext_ Liquibase extensions library that includes program processing of tags and attributes added in _liquibase-ext-schema_, and modifies the behaviour for default tags and attributes +- _liquibase-ext-schema_ Liquibase scheme that expands the standard Liquibase tags and attribute list with new *Platform*-specific ones +- _liquibase-ddm-ext_ Liquibase extensions library that includes program processing of tags and attributes added in _liquibase-ext-schema_, and modifies the behavior for default tags and attributes == General description -//*liquibase-ddm-ext* - бібліотека, що розширює функціональність https://docs.liquibase.com/home.html[Liquibase] і відповідальна за обробку XML-тегів та атрибутів, що можуть використовуватись при моделюванні регламенту реєструc *liquibase-ddm-ext* is a library that expands https://docs.liquibase.com/home.html[Liquibase] functionality, and is responsible for the processing of XML-tags and attributes that may be used in registry regulations modeling. -//Дана бібліотека додає обробку нових тегів та атрибутів, специфічних саме для _Платформи_, а також змінює логіку обробки деяких тегів, що присутні у Liquibase за замовчуванням This library adds the processing of _Platform_-specific new tags and attributes, and also changes the processing logic for some of the tags included in Liquibase by default. -//== Принципи реалізації == Implementation principles -//Дане розширення використовує усі основні принципи та поняття, що надаються за замовчуванням розробникам та користувачам Liquibase (https://www.liquibase.org/get-started/core-usage[детальніше]) та використовує механізми, надані розробникам розширень (приклади інших розширень, створених розробниками Liquibase для відкритого використання: https://github.com/orgs/liquibase/repositories) The extension uses all the main principles provided to Liquibase developers and users (https://www.liquibase.org/get-started/core-usage[details]), and uses the mechanisms provided to extensions developers (examples of other extensions created by Liquibase developers for open use: https://github.com/orgs/liquibase/repositories). -//== Сценарії використання == Usage scenarios -//Використовується в рамках пайплайну публікації регламенту (_registry-regulation-publication-pipeline_) на етапі розгортання дата моделі (стейдж _create-schema_ пайпу _registry-regulations-data-model_) для заповнення схеми реєстрової БД та створення метаданих, необхідних для генерації data-model сервісів. The solution is used within regulations publication pipeline (_registry-regulation-publication-pipeline_) on data model deployment stage (_create-schema_ stage of the _registry-regulations-data-model_ pipe) for the filling of registry DB scheme, and creation of the metadata required to generate data-model services. -//== Суміжні компоненти == Adjacent components -//- *registry-regulation-publication-pipeline* - безпосередньо викликає Liquibase-утиліту на етапі публікації регламенту - *registry-regulation-publication-pipeline* - calls the Liquibase-utility on regulations publication stage -//- *dataplatform-jenkins-agent* - імпортує дану бібліотеку у pom.xml для подальшого використання пайплайном публікації регламенту - *dataplatform-jenkins-agent* - imports the library to `pom.xml` for further usage by regulations publication pipeline -//- *liquibase-ext-schema* - розширена XSD-схема liquibase тегів та атрибутів, які можуть використовуватись при розробці реєстру *Платформи*, включається у всі файли регламенту, які обробляються Liquibase з використанням _liquibase-ddm-ext_ - *liquibase-ext-schema* - extended XSD-scheme of Liquibase tags and attributes that may be used in *Platform* registry development. It is included in all regulations files processed by Liquibase using _liquibase-ddm-ext_ -//- *service-generation-utility* - генерує сервіси _registry-model_, _registry-rest-api_, _registry-kafka-api_, _registry-soap-api_, використовуючи схему бази даних, яку наповнює Liquibase з використанням _liquibase-ddm-ext_ -- *service-generation-utility* - generates the _registry-model_, _registry-rest-api_, _registry-kafka-api_, and _registry-soap-api_ services, using database scheme, filled by Liquibase using _liquibase-ddm-ext_ +- *service-generation-utility* - generates the _registry-model_, _registry-rest-api_ and _registry-soap-api_ services, using database scheme, filled by Liquibase using _liquibase-ddm-ext_ -//== Перелік наявних розширень == List of extensions - -//// -[cols="2,1,4"] -|=== -| Назва тегу | Існує у стандартному Liquibase | Опис -| `addColumn` | так | розширює логіку Liquibase-тегу додавання колонки до існуючої таблиці -| `createAnalyticsIndex` | ні | надає можливість створити індекс для попередньо створеного view на репліці БД -| `createAnalyticsView` | ні | для створення аналітичної view на репліці БД -| `createCompositeEntity` | ні | для створення метаданих, необхідних для генерації у _registry-rest-api_ ендпоінта збереження декількох сутностей в рамках однієї транзакції -| `createDomain` | ні | для створення користувацьких типів даних (доменів) -| `createMany2Many` | ні | для створення між таблицями зв'язку many-to-many, що використовуватиметься при збереженні та отриманні даних -| `createSearchCondition` | ні | для створення пошукового критерію з БД за певними параметрами -| `createSimpleSearchCondition` | ні | для створення простого пошукового критерію (пошук за одним полем з однієї таблиці) -| `createTable` | так | розширює логіку Liquibase-тегу створення нової таблиці -| `createType` | ні | для створення типів даних ENUM -| `distributeTable` | ні | для створення https://docs.citusdata.com/en/v6.0/dist_tables/ddl.html[розподілених] таблиць -| `dropAnalyticsView` | ні | для видалення аналітичної view з репліки БД -| `dropColumn` | так | розширює логіку Liquibase-тегу видалення колонки з існуючої таблиці у БД -| `dropDomain` | ні | для видалення користувацьких типів даних (доменів) -| `dropSearchCondition` | ні | для видалення пошукових критеріїв з БД -| `dropType` | ні | для видалення типів даних ENUM -| `exposeSearchCondition` | ні | для створення метаданих, необхідних для генерації у _registry-rest-api_ ендпоінтів пошукових критеріїв, доступних для виклику з зовнішніх систем -| `grantAll` | ні | для видачі прав на усі аналітичні view -| `grant` | ні | для видачі прав на окрему view -| `makeObject` | ні | для визначення існуючої таблиці об'єктом (додаються посилання на таблицю _subject_, що створена попередньо) -| `modifyDataType` | так | розширює логіку Liquibase-тегу зміни типу даних колонки таблиці -| `partialUpdate` | ні | для створення метаданих, необхідних для генерації у _registry-rest-api_ ендпоінтів часткового оновлення сутності у БД (лише деяких визначених колонок) -| `rbac` | ні | для створення метаданих, необхідних для керування доступом до _registry-rest-api_ ендпоінтів для визначених ролей -| `referenceTable` | ні | для створення https://docs.citusdata.com/en/v11.2/develop/api_udf.html#create-reference-table[reference]-таблиці -| `renameColumn` | так | розширює логіку Liquibase-тегу перейменування колонки таблиці -| `revokeAll` | ні | для видалення прав на усі аналітичні view -| `revoke` | ні | для видалення прав на окрему view -| `rls` | ні | для застосування правил https://www.nextlabs.com/what-is-row-level-security/[Row-Level Security] до роботи з даними у таблиці -| `tableReadParameters` | ні | для створення метаданих, необхідних для генерації у _registry-rest-api_ коректних запитів на читання даних (з вкладеними сутностями/без і т.д) -| `truncateLocalDataAfterDistributingTable` | ні | для https://docs.citusdata.com/en/v11.2/develop/api_udf.html#truncate-local-data-after-distributing-table[видалення локальних даних] після створення розподіленої таблиці -| `undistributeTable` | ні | для https://docs.citusdata.com/en/v11.2/develop/api_udf.html#undistribute-table[відміни] функції розподілення таблиці -|=== -//// - [cols="2,1,4"] |=== | Tag name | Included in standard Liquibase | Description @@ -114,7 +57,9 @@ The solution is used within regulations publication pipeline (_registry-regulati | `createType` | no | for the creation of ENUM data types | `distributeTable` | no | for the creation of https://docs.citusdata.com/en/v6.0/dist_tables/ddl.html[distributed tables] | `dropAnalyticsView` | no | for the deletion of analytical view from the DB -| `dropColumn` | yes | рextends the logic of Liquibase-tag for the deletion of a column from a table in DB +| `dropColumn` | yes | *Not supported by the Platform.* +When you use the `dropColumn` tag, you'll get a validation error: `'dropColumn' is not allowed`. + | `dropDomain` | no | for the deletion of user data types (domains) | `dropSearchCondition` | no | for the deletion of search conditions from DB | `dropType` | no | for the deletion of ENUM data types @@ -135,45 +80,10 @@ The solution is used within regulations publication pipeline (_registry-regulati | `undistributeTable` | no | for the https://docs.citusdata.com/en/v11.2/develop/api_udf.html#undistribute-table[cancellation] of table distribution function |=== -//== Діаграми == Diagrams -//У загальному процесі розгортання моделі даних пайплайном публікації регламенту, виконання необхідних Liquibase-скриптів розширенням, відбувається на етапі *Створення схеми БД* (стейдж create-schema) In the general process of data model deployment by the regulations publication pipeline, the execution of required Liquibase-scripts by the extension is performed on the `create-schema` stage. - -//// -[plantuml, datamodel, svg] ----- -@startuml -title Розгортання моделі даних -skinparam monochrome true - -rectangle "Checkout" as checkout -rectangle "Ініціалізація\nкомпонентів\nреєстру" as initRegistry -rectangle "Створення\nсхеми БД" as createSchema -rectangle "Створення\nпроєктів дата\nсервісів" as createProjects -rectangle "Створення\nпайплайнів" as createPipelines -rectangle "Клонування\nпроєктів" as cloneProjects -rectangle "Генерування\nкоду проєктів" as generateProjects -rectangle "Вивантаження\nкоду проєктів" as commitProjects -rectangle "Білд коду\nпроєктів" as buildProjects -rectangle "Деплой дата\nсервісів" as deployProjects - -checkout -> initRegistry -initRegistry -> createSchema -createSchema -> createProjects -createProjects -> createPipelines -createPipelines --> cloneProjects -cloneProjects -l-> generateProjects -generateProjects -l-> commitProjects -commitProjects -l-> buildProjects -buildProjects -l-> deployProjects -@enduml ----- -//// - - [plantuml, datamodel, svg] ---- @startuml @@ -203,12 +113,9 @@ buildProjects -l-> deployProjects @enduml ---- -//Приклад пайпу публікації дата-моделі у Jenkins, *liquibase-ddm-ext* викликається на етапі *create-schema* -Example of a pipe for the publication of data model in Jenkins. *liquibase-ddm-ext* is called on the *create-schema* stage - +.Example of a pipe for the publication of data model in Jenkins. *liquibase-ddm-ext* is called on the *create-schema* stage image::architecture/libraries/liquibase-ddm-ext/data-model-pipe.png[] -//Діаграма, що відображає приблизну структуру пакетів у розширенні, а також основні точки, через які відбувається розширення основної функціональності Liquibase (класи _AbstractChange_, _CreateTableChange_ і т.д) The diagram that displays the approximate structure of packets in an extension, and the main points that comprise the extension of Liquibase default functionality (_AbstractChange_, _CreateTableChange_ classes, etc.) [plantuml, classes, svg] @@ -216,20 +123,16 @@ The diagram that displays the approximate structure of packets in an extension, include::partial$architecture/libraries/liquibase-ddm-ext/liquibase-classes.puml[] ---- -//== БД == DB -//Окрім створення власне схеми бази даних, *liquibase-ddm-ext* також заповнює таблиці з метаданими, необхідними для коректної генерації _registry_-сервісів Besides the creation of DB scheme, *liquibase-ddm-ext* also fills the tables with metadata required for the correct generation of _registry_-services. Tables where the metadata goes: _ddm_liquibase-metadata_, _ddm_rls_metadata_, _ddm_role_permission_. === ddm_liquibase_metadata -//Таблиця для метаданих, що не потребують структури, виділеної в окрему таблицю Table for metadata that doesn't require a structure described in a separate table. -//==== Структура таблиці ==== Table structure [source, sql] @@ -245,22 +148,8 @@ CREATE TABLE public.ddm_liquibase_metadata ( ); ---- -//==== Призначення колонок таблиці ==== Table columns function - -//// -[cols="2,4,1"] -|=== -| *Назва колонки* | *Призначення* | *Приклад* -| change_type | тип метаінформації | search_condition -| change_name | до якого об'єкта відноситься метаінформація | назва критерію пошуку -| attribute_name | назву одного атрибуту вказаного change | pagination -| attribute_value | значення для вказаного атрибуту | limit -|=== -//// - - [cols="2,4,1"] |=== | *Column name* | *Function* | *Example* @@ -272,10 +161,8 @@ CREATE TABLE public.ddm_liquibase_metadata ( === ddm_rls_metadata -//Таблиця, що зберігає інформацію про Row-Level Security правила, що мають застосовуватись до запитів _registry-rest-api_ The table that contains information on Row-Level Security rules that must be applied to _registry-rest-api_ requests. -//==== Структура таблиці ==== Table structure [source, sql] @@ -291,23 +178,8 @@ CREATE TABLE public.ddm_rls_metadata ( ); ---- -//==== Призначення колонок таблиці ==== Table columns function - -//// -[cols="2,4,1"] -|=== -| *Назва колонки* | *Призначення* | *Приклад* -| name | назва зміни правила | write_rls_katottg -| type | до якої операції має застосовуватись | write -| jwt_attribute | атрибут jwt-токену, в якому знаходиться необхідна для перевірки інформація | katottg_jwt_attr -| check_table | таблиця, до якої застосовується RLS | katottg_table -| check_column | колонка таблиці, значення з якої будуть перевірятись для RLS | katottg_value -|=== -//// - - [cols="2,4,1"] |=== | *Column name* | *Function* | *Example* @@ -320,10 +192,8 @@ CREATE TABLE public.ddm_rls_metadata ( === ddm_role_permission -//Таблиця, що зберігає інформацію про параметри доступу до даних за RBAC The table that contains information for RBAC data access parameters -//==== Структура таблиці ==== Table structure [source, sql] @@ -339,22 +209,8 @@ CREATE TABLE public.ddm_role_permission ( ); ---- -//==== Призначення колонок таблиці ==== Table columns function -//// -[cols="2,4,1"] -|=== -| *Назва колонки* | *Призначення* | *Приклад* -| role_name | роль користувача, для якої виконується налаштування | officer -| object_name | назва об'єкту, доступ до якого обмежується | назва таблиці чи критерію пошуку -| column_name | атрибут об'єкту, доступ до якого обмежується | колонка таблиці чи критерію пошуку -| operation | тип операції (читання, запис і т.д) | S / I / U / D -|=== -//// - - - [cols="2,4,1"] |=== | *Column name* | *Function* | *Example* @@ -362,4 +218,4 @@ CREATE TABLE public.ddm_role_permission ( | object_name | object, access to which is being restricted | table name, or search condition name | column_name | an attribute of the object, access to which is being restricted | table column, or search condition column | operation | operation type (read, write, etc.) | S / I / U / D -|=== +|=== \ No newline at end of file diff --git a/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc b/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc index d2253a058d..7a9e1dfe42 100644 --- a/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc +++ b/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/create-table-api.adoc @@ -1,4 +1,4 @@ -= Розширення createTable += Розширення _createTable_ include::platform:ROOT:partial$templates/document-attributes/arch-set-ua.adoc[] include::platform:ROOT:partial$admonitions/language-ua.adoc[] @@ -52,29 +52,47 @@ include::platform:ROOT:partial$admonitions/language-ua.adoc[] == Опис параметрів -Параметри для основного тегу - +Параметри для основного тегу `ext:createTable`: :: ++ [cols="2,2,6"] |=== -| Назва параметру | Можливі значення | Опис -| *historyFlag* | true | створює для вказаної таблиці відповідну історичну з суфіксом _hst, в яку записуються усі зміни у записах таблиці -| *bulkLoad* | true/false | для модифікації API згенерованих сервісів, визначає, чи буде згенерований ендпоінт, що дозволяє транзакційно зберігати декілька сутностей в одному запиті -| *readMode* | sync/async | для модифікації API згенерованих сервісів, визначає,як буде відбуватись операція читання даних, синхронно чи асинхронно (синхронно - на рівні _registry-rest_api_, асинхронно - шляхом rest-api-> _registry-kafka-api_ -> rest-api) -| *isObject* | true/false | визначає таблицю як об'єкт (додається зв'язок з таблицею _subject_) -|=== - -Параметри для вкладених тегів *column* +| Назва параметра | Можливі значення | Опис +| `historyFlag` | true | Створює для вказаної таблиці відповідну історичну із суфіксом `_hst`, в яку записуються усі зміни у записах таблиці. +| `bulkLoad` | true/false | Для модифікації API згенерованих сервісів, визначає, чи буде згенерований ендпоінт, що дозволяє *транзакційно* зберігати декілька сутностей в одному запиті +| `isObject` | true/false | Визначає таблицю як об'єкт (додається зв'язок з таблицею _subject_) +|=== ++ +[TIP] +==== +Деталі застосування параметрів ви можете переглянути на сторінках: + +* xref:registry-develop:data-modeling/data/physical-model/liquibase-ddm-ext.adoc#createTable[Створення таблиць: _historyFlag_] +* xref:registry-develop:data-modeling/data/physical-model/liquibase-ddm-ext.adoc#bulk-load[Атрибут _bulkLoad_] +* xref:registry-develop:study-project/study-tasks/task-1-registry-db-modeling.adoc#is-object[Атрибут _isObject_] +==== + +Параметри для вкладених тегів `column`: :: ++ [cols="2,2,6"] |=== -| Назва атрибуту (name) | Можливі значення (value) | Опис -| *classify* | private/confidential | класифікує дані в колонці як персональні -| *autoGenerate* | Патерн для генерації значень у колонці (наприклад, _АА-{dd-MM-yyyy}-{SEQ}_) | для генерації унікальних значень у колонку за вказаним патерном +| Назва атрибута (name) | Можливі значення (value) | Опис +| `classify` | `private`/`confidential` | Класифікує дані в колонці як персональні +| `autoGenerate` | Патерн для генерації значень у стовпці (наприклад, _АА-{dd-MM-yyyy}-{SEQ}_) | для генерації унікальних значень у колонку за вказаним патерном |=== ++ +[TIP] +==== +Деталі застосування параметрів ви можете переглянути на сторінках: + +* xref:registry-develop:study-project/study-tasks/task-1-registry-db-modeling.adoc#ext-classify[Тег _ext:classify_] +* xref:registry-develop:data-modeling/data/physical-model/auto-generate-number.adoc[] +==== == Згенеровані запити до БД -Запити згенеровані для таблиці, наведеної у прикладі +Запити згенеровані для таблиці, наведеної у прикладі: + [source, sql] ---- CREATE TABLE registry.pd_processing_consent_hst (consent_id UUID NOT NULL, consent_date TIMESTAMP WITH TIME ZONE NOT NULL, person_gender TYPE_GENDER NOT NULL, person_full_name TEXT NOT NULL, person_pass_number TEXT NOT NULL, auto_generated_number TEXT NOT NULL, ddm_created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL, ddm_created_by TEXT NOT NULL, ddm_dml_op CHAR(1) NOT NULL, ddm_system_id UUID NOT NULL, ddm_application_id UUID NOT NULL, ddm_business_process_id UUID, ddm_business_process_definition_id TEXT, ddm_business_process_instance_id TEXT, ddm_business_activity TEXT, ddm_business_activity_instance_id TEXT, ddm_digital_sign TEXT, ddm_digital_sign_derived TEXT, ddm_digital_sign_checksum TEXT, ddm_digital_sign_derived_checksum TEXT, CONSTRAINT pk_pd_processing_consent PRIMARY KEY (consent_id), CONSTRAINT ui_pd_processing_consent_hst UNIQUE (consent_id, ddm_created_at)); diff --git a/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc b/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc index f5b3008703..0e9575028f 100644 --- a/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc +++ b/docs/ua/modules/arch/pages/architecture/libraries/liquibase-ddm-ext/overview.adoc @@ -1,4 +1,4 @@ -= Бібліотека liquibase-ddm-ext += Бібліотека _liquibase-ddm-ext_ include::platform:ROOT:partial$templates/document-attributes/arch-set-ua.adoc[] include::platform:ROOT:partial$admonitions/language-ua.adoc[] @@ -38,7 +38,7 @@ Liquibase за замовчуванням підтримує функціона - *registry-regulation-publication-pipeline* - безпосередньо викликає Liquibase-утиліту на етапі публікації регламенту - *dataplatform-jenkins-agent* - імпортує дану бібліотеку у pom.xml для подальшого використання пайплайном публікації регламенту - *liquibase-ext-schema* - розширена XSD-схема liquibase тегів та атрибутів, які можуть використовуватись при розробці реєстру *Платформи*, включається у всі файли регламенту, які обробляються Liquibase з використанням _liquibase-ddm-ext_ -- *service-generation-utility* - генерує сервіси _registry-model_, _registry-rest-api_, _registry-kafka-api_, _registry-soap-api_, використовуючи схему бази даних, яку наповнює Liquibase з використанням _liquibase-ddm-ext_ +- *service-generation-utility* - генерує сервіси _registry-model_, _registry-rest-api_, _registry-soap-api_, використовуючи схему бази даних, яку наповнює Liquibase з використанням _liquibase-ddm-ext_ == Перелік наявних розширень @@ -57,7 +57,7 @@ Liquibase за замовчуванням підтримує функціона | `createType` | ні | для створення типів даних ENUM | `distributeTable` | ні | для створення https://docs.citusdata.com/en/v6.0/dist_tables/ddl.html[розподілених] таблиць | `dropAnalyticsView` | ні | для видалення аналітичної view з репліки БД -| `dropColumn` | так | розширює логіку Liquibase-тегу видалення колонки з існуючої таблиці у БД +| `dropColumn` | так | *Не підтримується Платформою*. При використанні тегу `dropColumn` ви отримаєте помилку валідації: `'dropColumn' is not allowed`. | `dropDomain` | ні | для видалення користувацьких типів даних (доменів) | `dropSearchCondition` | ні | для видалення пошукових критеріїв з БД | `dropType` | ні | для видалення типів даних ENUM @@ -126,7 +126,7 @@ include::partial$architecture/libraries/liquibase-ddm-ext/liquibase-classes.puml Окрім створення власне схеми бази даних, *liquibase-ddm-ext* також заповнює таблиці з метаданими, необхідними для коректної генерації _registry_-сервісів -Таблиці, в які потрапляють ці метадані: _ddm_liquibase-metadata_, _ddm_rls_metadata_, _ddm_role_permission_ +Таблиці, в які потрапляють ці метадані: `ddm_liquibase-metadata`, `ddm_rls_metadata`, `ddm_role_permission`. === ddm_liquibase_metadata @@ -152,10 +152,10 @@ CREATE TABLE public.ddm_liquibase_metadata ( [cols="2,4,1"] |=== | *Назва колонки* | *Призначення* | *Приклад* -| change_type | тип метаінформації | search_condition -| change_name | до якого об'єкта відноситься метаінформація | назва критерію пошуку -| attribute_name | назву одного атрибуту вказаного change | pagination -| attribute_value | значення для вказаного атрибуту | limit +| `change_type` | тип метаінформації | search_condition +| `change_name` | до якого об'єкта відноситься метаінформація | назва критерію пошуку +| `attribute_name` | назву одного атрибуту вказаного change | pagination +| `attribute_value` | значення для вказаного атрибуту | limit |=== === ddm_rls_metadata @@ -217,4 +217,4 @@ CREATE TABLE public.ddm_role_permission ( | object_name | назва об'єкту, доступ до якого обмежується | назва таблиці чи критерію пошуку | column_name | атрибут об'єкту, доступ до якого обмежується | колонка таблиці чи критерію пошуку | operation | тип операції (читання, запис і т.д) | S / I / U / D -|=== +|=== \ No newline at end of file