Heap - API объявления таблиц
Объект Heap, импортируемый из модуля @app/heap, предоставляет доступ
к DSL (domain-specific language) объявления heap-таблицы. С помощью него формируются одновременно
Typescript-тип записи таблицы и JSON-схема, которая используется для валидации сохраняемых в таблицу
данных. Ниже перечислены все доступные функции объекта Heap:
Функции
Функция объявления таблицы
- Heap.Table — главный и единственный способ объявить heap-таблицу.
Функции объявления базовых простых типов
-
- Heap.Integer — number с валидацией на целочисленность.
-
- Heap.NonEmptyString — строка, которая не может быть пустой
или содержать только пробельные символы. - Heap.RegEx — синтаксический сахар для строки с валидацией
с помощью регулярного выражения.
- Heap.NonEmptyString — строка, которая не может быть пустой
Функции объявления базовых составных типов
- Heap.Array — массив с заданным типом элементов.
- Heap.Object — вложенный объект с заданной структурой.
- Heap.Record — вложенный "map" с заданным типом ключей и значений.
- Heap.Tuple — кортеж, массив фиксированной длины с заданными типами для каждой позиции.
- Heap.Union — один из нескольких заданных альтернативных типов, полный аналог Typescript
union. - Heap.Enum
Функции-модификаторы типов полей объекта
- Heap.NonRequired — разрешает не указывать "обязательное" поле при операции
create,
автоматически заполняя его указанным значением по умолчанию. - Heap.Nullable — синтаксический сахар к
Heap.NonRequired(Heap.Union(x, Heap.Null()), null). - Heap.Optional — делает поле объекта необязательным (добавляет "вопросик"
x Heap.String()->x? Heap.String()).
Функции объявления дополнительных "умных" типов
- Heap.DateTime — стандартный js Date.
- Heap.Money — представление денежной суммы через специальный класс Money.
- Heap.Currency — вспомогательный тип, строка из трёх заглавных латинских букв
(международный код валюты), используется внутри схемы Heap.Money.
- Heap.Currency — вспомогательный тип, строка из трёх заглавных латинских букв
- Heap.File — представление файла, загруженного в файловое хранилище, через специальный
класс StorageFile.- Heap.ImageFile — файл изображения, загруженный в хранилище. Представлен через
специальный класс StorageImageFile с дополнительными удобными методами для работы с изображениями. - Heap.VideoFile — файл видео-ролика, загруженный в хранилище. Представлен через
специальный класс StorageVideoFile с дополнительными удобными методами для работы с видео. - Heap.AudioFile — файл аудиозаписи, загруженный в хранилище. Представлен через
специальный класс StorageAudioFile с дополнительными удобными методами для работы с аудио.
- Heap.ImageFile — файл изображения, загруженный в хранилище. Представлен через
Функции объявления ссылок на другие записи таблиц
- Heap.RefLink — ссылка на запись конкретной heap-таблицы.
- Heap.GenericLink — ссылка на запись любой heap-таблицы.
Функции объявления вспомогательных простых типов
- Heap.Any — Typescript
any- позволяет хранить любые JSON-сериализуемые данные без валидации. - Heap.Literal — Typescript-литерал, обычно используется для объявления альтернатив
внутри Heap.Union. - Heap.Null — буквально
null, обычно используется для объявления альтернативы внутри
Heap.Union. - Heap.Undefined — буквально
undefined, использование не рекомендуется,
поскольку undefined не может быть сохранён в JSON. - Heap.Unknown — Typescript
unknown- аналогично Heap.Any.
Функции преобразования существующих типов (схем)
- Heap.Intersect — объединяет несколько существующих схем
Heap.Object,
Heap.Recordв одну аналогично операции intersect (A & B) над типами в Typescript. - Heap.KeyOf — возвращает схему набора ключей входящей схемы
Heap.Object. - Heap.Omit — исключает заданный набор ключей (полей) входящей схемы
Heap.Object,
аналогично встроенному в Typescript типуOmit. - Heap.Partial — превращает все поля входящей схемы
Heap.Objectв необязательные,
аналогично встроенному в Typescript типуPartial. - Heap.Pick — возвращает схему, включающую только заданные поля из входящей схемы
Heap.Object, аналогично встроенному в Typescript типуPick. - Heap.Required — превращает все необязательные поля входящей схемы
Heap.Object
в обязательные, аналогично встроенному в Typescript типуRequired.
