Heap.Table
Объявляет heap-таблицу. Это главный и единственный поддерживаемый способ "создать" heap-таблицу.
Применение / сигнатура
import { Heap } from '@app/heap'
const Table = Heap.Table(tableName, fields)
Функция Heap.Table может быть вызывана только на верхнем уровне модуля, т.е. её нельзя вызывать в теле функции
или любом другом блоке. Кроме того, нужно напрямую использовать объект Heap из импорта в этом модуле,
то есть нельзя сделать:
import { Heap } from '@app/heap'
const RenamedHeap = Heap
const table = RenamedHeap.Table(...)
Аргументы
-
tableName:
string*
Название таблицы. Должно быть уникальным в рамках аккаунта, в котором создан файл кода таблицы.Название может содержать только латинские буквы (строчные и заглавные), цифры, символ подчёркивания (
_),
а также точку (.) и дефис (-), но только в середине названия в качестве разделителей.Название должно быть простым строковым литералом, записанным непосредственно в вызове Heap.Table, т.е. оно не
может быть переменной, простым выражением с конкатенацией или шаблоном с интерполяцией. Это проверяется на
этапе компиляции файла. -
fields:
{ [key: string]: HeapSchema }*
Объект, ключами которого являются названия полей верхнего уровня таблицы, а значениями - схемы, описывающие их типы
(например,Heap.String()).Названия полей могут содержать только латинские буквы (строчные и заглавные), цифры, символ подчёркивания (
_)
и не должны начинаться с цифры.Поскольку запись таблицы на верхнем уровне представляет собой JSON-объект с полями, описание полей таблицы полностью
аналогично описанию полей в Heap.Object.
Возвращаемое значение
Объект-репозиторий HeapTableRepo, который даёт доступ к CRUD-операциям над таблицей.
Примеры
Объявление и использование простой heap-таблицы
const issues = Heap.Table('issues', {
title: Heap.NonEmptyString(),
done: Heap.NonRequired(Heap.Boolean(), false),
deadline: Heap.Nullable(Heap.DateTime()),
})
const firstIssue = await issues.create(ctx, {
title: 'first',
]})
await issues.update(ctx, {
id: firstIssue.id,
deadline: new Date(2022, 11, 31),
]})
