Atomic операции с данными

Atomic запросы позволяют обеспечить атомарное изменение записей активов и связей и получать записи активов вместе с их связями.

В этой статье:

Atomic создание / обновление записей активов

Endpoint: POST /v1/dg/data/atomic/

Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/atomic/upsert_1

  • Тело запроса:

Название

Тип

Обязательный

Описание

com.unidata.dg.rest.v1.data.asset.upsert

UpsertAssetRequestRO

Да

Запрос создания/обновления записи актива

com.unidata.dg.rest.v1.data.relations.upsert

UpsertRelationsRequestRO

Нет

Запрос создания/обновления связей

com.unidata.dg.rest.v1.data.relations.delete

DeleteRelationsRequestRO

Нет

Запрос удаления связей

Примечание

Для atomic запросов идентификация левого конца связей в запросе UpsertRelationsRequestRO является необязательной

  • Ответ:

Название

Тип

Описание

com.unidata.dg.rest.v1.data.asset.upsert

UpsertAssetResultRO

Результат создания/обновления актива

com.unidata.dg.rest.v1.data.relations.upsert

UpsertRelationsResultRO

Результат создания/обновления связей

com.unidata.dg.rest.v1.data.relations.delete

DeleteRelationsResultRO

Результат удаления связей

Пример

POST /v1/dg/data/atomic
REQUEST_BODY:
{
    "payload": {
        "com.unidata.dg.rest.v1.data.asset.upsert": {
            "typeName": "database",
            "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9",
            "asset": {
                "simpleAttributes": [
                    {
                        "name": "host",
                        "value": "localhost",
                        "type": "String"
                    },
                    {
                        "name": "port",
                        "value": "5432",
                        "type": "Integer"
                    }
                ]
            }
        },
        "com.unidata.dg.rest.v1.data.relations.upsert": {
            "relations": [
                {
                    "relationType": "include",
                    "toEtalonId": "dab1fa92-baa5-11ec-b055-4fb2ec1632f9",
                    "toTypeName": "tables"
                }
            ]
        },
        "com.unidata.dg.rest.v1.data.relations.delete": {
            "deletes": [
                {
                    "relationType": "contains",
                    "etalonId": "092ad86d-93b1-11ec-a4d3-b336588c82b2"
                }
            ]
        }
    }
}

Результат: В результате исполнения запроса будет обновлена запись актива типа database c идентификатором 23451fc2-ac26-11ec-9124-b5e9fc06bdf9. Для нее создастся новая связь типа include к активу типа tables c идентификатором dab1fa92-baa5-11ec-b055-4fb2ec1632f9 и будет удалена ее связь типа contains c идентификатором 092ad86d-93b1-11ec-a4d3-b336588c82b2.

Atomic получение записей активов

Endpoint: POST /v1/dg/data/atomic/get. Отвечает за получение записей активов вместе с их связями.

Swagger (пример ссылки, подставьте свой хост и порт): http://<хост>:<порт>/universe-backend/api/v1/dg/data/openapi.json#/atomic/get_2

  • Тело запроса:

Название

Тип

Обязательный

Описание

com.unidata.dg.rest.v1.data.asset.get

GetAssetRequestRO

Да

Запрос получения записи актива

com.unidata.dg.rest.v1.data.relations.get

GetRelationsRequestRO

Нет

Запрос получения связей актива

Примечание

Для atomic запросов идентификация актива в запросе GetRelationsRequestRO является необязательной

  • Ответ:

Название

Тип

Описание

com.unidata.dg.rest.v1.data.asset.get

GetAssetResultRO

Результат получения актива

com.unidata.dg.rest.v1.data.relations.get

GetRelationsResultRO

Результат получения связей актива

Пример

POST /v1/dg/data/atomic/get
REQUEST_BODY:
{
    "payload": {
        "com.unidata.dg.rest.v1.data.asset.get": {
            "typeName": "database",
            "etalonId": "23451fc2-ac26-11ec-9124-b5e9fc06bdf9"
        },
        "com.unidata.dg.rest.v1.data.relations.get": {
            "fetchAll": true,
            "count": 10
        }
    }
}