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
}
}
}