UNPKG

@webda/postgres

Version:

Implements Postgres on webda

120 lines (118 loc) 3.19 kB
import { CoreModel } from "@webda/core"; import pg, { ClientConfig, PoolConfig } from "pg"; import { SQLResult, SQLStore, SQLStoreParameters } from "./sqlstore.js"; /** * */ export declare class PostgresParameters extends SQLStoreParameters { /** * @default true */ usePool?: boolean; /** * By default use environment variables */ postgresqlServer?: ClientConfig | PoolConfig; /** * Auto create table if not exists * @default true */ autoCreateTable?: boolean; /** * View name prefix */ viewPrefix?: string; /** * Regexp of models to include * * @default [".*"] */ views?: string[]; /** * Call explain on each query to ensure it is optimized * @default false */ debug?: boolean; constructor(params: any, store: PostgresStore); } /** * Store data within PostgreSQL with JSONB * * The table should be created before with * ```sql * CREATE TABLE IF NOT EXISTS ${tableName} * ( * uuid uuid NOT NULL, * data jsonb, * CONSTRAINT ${tableName}_pkey PRIMARY KEY (uuid) * ); * ``` * * @WebdaModda */ export declare class PostgresStore<T extends CoreModel = CoreModel, K extends PostgresParameters = PostgresParameters> extends SQLStore<T, K> { client: pg.Client | pg.Pool; /** * @override */ loadParameters(params: any): PostgresParameters; /** * @override */ init(): Promise<this>; /** * Ensure your table exists */ checkTable(): Promise<void>; /** * Return the postgresql client * @returns */ getClient(): pg.Client | pg.Pool; /** * Execute a query on the server * * @param query * @returns */ executeQuery(query: string, values?: any[]): Promise<SQLResult<T>>; /** * Create views for each models * * @param [prefix=""] prefix to add to the view name * @param [skips=[]] list of models to skip */ createViews(): Promise<void>; /** * @override */ mapExpressionAttribute(attribute: string[], asString?: boolean): string; /** * @override */ _patch(object: any, uid: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<any>; /** * @override */ _removeAttribute(uuid: string, attribute: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<void>; /** * @override */ getQueryCondition(itemWriteCondition: any, itemWriteConditionField: string, params: any[]): string; /** * @override */ _incrementAttributes(uid: string, params: { property: string; value: number; }[], updateDate: Date): Promise<any>; /** * @override */ _upsertItemToCollection(uuid: string, attribute: string, item: any, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<any>; /** * @override */ _deleteItemFromCollection(uuid: string, attribute: string, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<any>; } export default PostgresStore;