@webiny/api-page-builder-so-ddb-es
Version:
The DynamoDB + Elasticsearch storage operations Webiny Page Builder API.
64 lines (63 loc) • 2.84 kB
TypeScript
import { BlockCategoryStorageOperations as BaseBlockCategoryStorageOperations, CategoryStorageOperations as BaseCategoryStorageOperations, PageBlockStorageOperations as BasePageBlockStorageOperations, PageBuilderContextObject, PageBuilderStorageOperations as BasePageBuilderStorageOperations, PageTemplateStorageOperations as BasePageTemplateStorageOperations, PbContext as BasePbContext } from "@webiny/api-page-builder/types";
import { AttributeDefinition, Entity, Table, TableConstructor } from "@webiny/db-dynamodb/toolbox";
import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
import { Client } from "@elastic/elasticsearch";
import { PluginCollection } from "@webiny/plugins/types";
export type Attributes = Record<string, AttributeDefinition>;
export declare enum ENTITIES {
SYSTEM = "PbSystem",
SETTINGS = "PbSettings",
CATEGORIES = "PbCategories",
MENUS = "PbMenus",
PAGE_ELEMENTS = "PbPageElements",
PAGES = "PbPages",
PAGES_ES = "PbPagesEs",
BLOCK_CATEGORIES = "PbBlockCategories",
PAGE_BLOCKS = "PbPageBlocks",
PAGE_TEMPLATES = "PbPageTemplates"
}
export interface TableModifier {
(table: TableConstructor<string, string, string>): TableConstructor<string, string, string>;
}
export interface PageBuilderStorageOperations extends BasePageBuilderStorageOperations {
getTable: () => Table<string, string, string>;
getEsTable: () => Table<string, string, string>;
getEntities: () => Record<"system" | "settings" | "categories" | "menus" | "pageElements" | "pages" | "pagesEs" | "blockCategories" | "pageBlocks" | "pageTemplates", Entity<any>>;
}
export interface PbContext extends BasePbContext {
pageBuilder: PageBuilderContextObject & {
storageOperations: PageBuilderStorageOperations;
};
}
export interface StorageOperationsFactoryParams {
documentClient: DynamoDBDocument;
elasticsearch: Client;
table?: TableModifier;
esTable?: TableModifier;
attributes?: Record<ENTITIES, Attributes>;
plugins?: PluginCollection;
}
export interface StorageOperationsFactory {
(params: StorageOperationsFactoryParams): PageBuilderStorageOperations;
}
export interface DataContainer<T> {
PK: string;
SK: string;
TYPE: string;
data: T;
}
export interface DataLoaderInterface {
clear: () => void;
}
export interface PageTemplateStorageOperations extends BasePageTemplateStorageOperations {
dataLoader: DataLoaderInterface;
}
export interface BlockCategoryStorageOperations extends BaseBlockCategoryStorageOperations {
dataLoader: DataLoaderInterface;
}
export interface CategoryStorageOperations extends BaseCategoryStorageOperations {
dataLoader: DataLoaderInterface;
}
export interface PageBlockStorageOperations extends BasePageBlockStorageOperations {
dataLoader: DataLoaderInterface;
}