Объявляет 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-операциям над таблицей.
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),
]})