Изменение таблицы
Для внесения изменений в свойства таблицы (добавление и удаление полей, изменение описания, параметров доступа) необходимо выполнить PATCH-запрос с параметрами изменения ресурса:
PATCH {host}/tables/{name}
Content-Type: application/json
JSON body
{
"columnsAdd": [
{
"name": "string",
"defaultValue": null,
"type": "Unknown",
"maxLength": 0,
"isNullable": true,
"autoincrement": false,
"srid": 0,
"isUnique": true,
"hasIndex": true
}
],
"columnsDelete": [
"string"
],
"rowCount": 0,
"geometries": [
"unknown"
],
"type": "string",
"configuration": {},
"name": "string",
"alias": "string",
"owner": "string",
"description": "string",
"preview": "string",
"createdDate": "2019-08-24T14:15:22Z",
"changedDate": "2019-08-24T14:15:22Z",
"permissions": "none",
"acl": {
"data": [
{
"role": "string",
"permissions": "none"
}
]
},
"icon": "string",
"invisibleInCatalog": true
}
Новые значения изменяемых параметров, которые не относятся к полям таблицы, необходимо прописать в JSON-теле запроса. Добавление и удаление полей производится с помощью параметров columnsAdd
и columnsDelete
. Изменение свойств существующих полей не поддерживается.
Конфигурация добавляемых полей columnsAdd
представляет собой массив/список JSON-объектов и содержит следующие параметры:
name
- уникальное название поля (обязательный параметр). Может содержать латинские буквы, цифры и символ_
;defaultValue
- значение по умолчанию;type
- тип данных поля (обязательный параметр). Допустимые значения:String
,Int32
,Int64
,Double
,DateTime
,Boolean
,Point
,Polyline
,Polygon
,Multipoint
;maxLength
- максимальная длина поля;isNullable
- допускаются ли пустые значения (true
илиfalse
);autoincrement
- автоматическое приращение дляInt32
иInt64
полей (true
илиfalse
);srid
- система координат для полей геометрии (EPSG-код, например, 4326 - WGS84 или 3857 - Web Mercator WGS84);isUnique
- проверять значения поля на уникальность (true
илиfalse
);hasIndex
- индексировать поле (true
илиfalse
).
Перечень удаляемых полей columnsDelete
представляет собой массив/список строк, содержащих системные имена удаляемых полей.
Пример
Изменим созданную ранее таблицу зданий, добавив в неё новые поля количества квартир и организаций и удалив поле материала здания. Также изменим описание таблицы.
Python
import requests
import json
def login(username, password): # производит авторизацию и возвращает объект сессии
authUrl = f'{host}/account/login/'
login_data = {
"username": username,
"password": password
}
headers = {'Content-type': 'application/json'}
# создание объекта сессии
s = requests.Session()
# авторизация и получение JWT-токена
s.post(url=authUrl, data=json.dumps(login_data), headers=headers)
return s
host = 'https://evergis.ru/sp'
username = 'username'
password = 'password'
headers = {'Content-type': 'application/json'}
# авторизация
s = login(username, password)
# описание изменений в таблице
tableName = f'{username}.buildings_table'
tableDescription = 'Здания с информацией об адресе, назначении, количестве этажей, годе постройки, количестве квартир и организаций'
tableColumnsAdd = [
{"name": "aprtCount", "type": "Int32"},
{"name": "firmCount", "type": "Int32"}
]
tableColumnsDelete = ["material"]
tableUpdateProps = {
"name": tableName,
"description": tableDescription,
"columnsAdd": tableColumnsAdd,
"columnsDelete": tableColumnsDelete
}
updateTableUrl = f'{host}/tables/{tableName}'
# выполнение PATCH-запроса
r = s.patch(url=updateTableUrl, data=json.dumps(tableUpdateProps), headers=headers).json()
URL и JSON запроса
Для работы с запросом в Postman или аналогичном приложении
PATCH https://evergis.ru/sp/tables/username.buildings_table
Content-Type: application/json
JSON body:
{
"name": "username.buildings_table",
"description": "Здания с информацией об адресе, назначении, количестве этажей, годе постройки, количестве квартир и организаций",
"columnsAdd": [
{"name": "aprtCount", "type": "Int32"},
{"name": "firmCount", "type": "Int32"}
],
"columnsDelete": ["material"]
}