Структуры.DefineType

Материал из Hivext Wiki

Перейти к: навигация, поиск

Метод DefineType

Общая информация

Параметр Значение
Описание Определение нового типа.
Адрес метода http://api.hivext.ru/1.0/data/base/{протокол}/definetype
Метод сервиса Структуры

Параметры

Имя параметра Тип Описание
Входящие параметры
appid string [*] Идентификатор приложения.
session string [*] Идентификатор сессии.
type string [*] Имя создаваемого типа данных. Требования к именам:
  • Должно быть уникально в пределах идентификатора приложения;
  • Не должно начинаться с цифры;
  • Может содержать латинские буквы, цифры и символ подчеркивания.

Если требуется создать несколько типов подряд используйте перечисление через запятую. Этот вариант сокращает число запросов по сети к платформе и число вызовов компилятора в платформе до одного раза. Или можно воспользоваться методом Call сервиса Batch, тогда перечислять типы через запятую необязательно, сервис сам скомбинирует несколько вызовов DefineType в один оптимальный для платформы.

fields string

Поля типа в формате: { имя поля : "тип данных", ... }
Поля можно перечислить через запятую если создается несколько типов данных за один запрос: { имя поля : "тип данных", ... }, { имя поля : "тип данных", ... }, ...
Имя поля любое кроме зарезервированных имен: id
Типы данных:

Название типа Описание типа
Базовые типы данных
boolean
byte
short
integer
long
float
double
char
string Текстовый тип данных, по умолчанию максимум 255 символов.
string(N) Текстовый тип данных, может содержать максимум N символов, где N любое целое число от 1 до 10240.
text Текстовый тип данных, может содержать максимум 65000 символов.
mtext Текстовый тип данных, может содержать максимум 16000000 символов.
list Коллекция (список) объектов типа string.
list<type> Коллекция (список) объектов определенного типа, где type - название типа данных.
set Коллекция (набор) уникальных объектов типа string.
set<type> Коллекция (набор) уникальных объектов определенного типа, где type - название типа данных.
map Набор объектов парами ключ/значение типа string.
map<type, type> Набор объектов парами ключ/значение определенного типа, где type - название типа данных.

Дата и время
По умолчанию свойства данных типов содержат время создания объекта по Гринвичу.

time HH:MM:SS
date YYYY-MM-DD
datetime YYYY-MM-DD HH:MM:SS
timestamp YYYY-MM-DD HH:MM:SS
year YYYY
millisec Время в миллисекундах, которое прошло с 1 января 1970 года. Также известно как unix time.

Специальные типы данных
Поля данных типов заполняются платформой автоматически при создании/обновлении объекта. Поля можно использовать в запросах по критериям. Запись в них запрещена.

user Тип данных пользователь. Поля данного типа содержат идентификатор пользователя (uid) создавшего/обновившего объект (для гостей uid = 0).
signature Тип данных подпись устройства. Поля данного типа содержат подпись устройства создавшего/обновившего объект.

Комплексные типы данных

Созданные типы данных можно использовать для создания комплексных типов данных. Например
DefineType(appid, session, "SimpleType", { PropB : "string" });
DefineType(appid, session, "ComplexType", { PropA : "int", Simple : "SimpleType" });

В результате получится следующий тип данных:

ComplexType : {
    PropA : "int",
    Simple : {
        PropB : "string"
    }
}

Метод CreateObject(..., "ComplexType") кроме создания объекта типа ComplexType создаст объект типа SimpleType в другой таблице. В свойстве Simple будет содержаться id созданного объекта типа SimpleType.

Методы выборки GetObject, GetObjects, GetObjectsByCriteria, GetProperty для поля Simple вернут индекс (id) объекта. Если в требуется вернуть сам объект, а не него индекс, в параметре eager (данный параметр содержат все методы выборки) указывается имя свойства для которого вернется объект.

unique string

Уникальные поля типа в формате: { fields : [ "имя поля", ... ] }, { ... }
Примеры:

field { fields : [ "field" ] }
field1 AND field2 { fields : [ "field1", "field2" ] }
field1 OR field2 { fields : [ "field1" ] }, { fields : [ "field2" ] }
(field1 AND field2) OR (field3 AND field4) { fields : [ "field1", "field2" ] }, { fields : [ "field3", "field4" ] }
Возвращаемые параметры
result int

Коды ошибок

1001 Имя типа данных не соответствует требованиям
1002 Тип данных с указанным именем уже существует
1011 Превышена квота на количество типов
1012 Превышена квота на количество полей
error string Описание ошибки, если она произошла.