@webda/postgres
Version:
Implements Postgres on webda
120 lines (118 loc) • 3.19 kB
TypeScript
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;