@webda/postgres
Version:
Implements Postgres on webda
78 lines (77 loc) • 2.42 kB
TypeScript
import { CoreModel, ModelLink, Store, StoreParameters, WebdaQL } from "@webda/core";
export interface SQLDatabase {
name: string;
}
export declare class SQLStoreParameters extends StoreParameters {
table: string;
database: SQLDatabase;
}
export interface SQLClient {
query: () => Promise<void>;
}
export interface SQLResult<T> {
rows: T[];
rowCount: number;
}
export declare class SQLComparisonExpression extends WebdaQL.ComparisonExpression {
toStringValue(value: (string | number | boolean) | (string | number | boolean)[]): string;
toStringAttribute(): string;
}
export declare abstract class SQLStore<T extends CoreModel, K extends SQLStoreParameters = SQLStoreParameters> extends Store<T, K> {
sqlQuery(q: string, values?: any[]): Promise<SQLResult<T>>;
/**
* Execute a SQL query
* @param q the query
* @param values to be added to the query
*/
abstract executeQuery(q: string, values?: any[]): Promise<SQLResult<T>>;
/**
* Add the SELECT * FROM table if the query is not a full query
* @param q query to complete
* @returns
*/
completeQuery(q: string): string;
/**
* @override
*/
_delete(uid: string, writeCondition: any, writeConditionField: string): Promise<void>;
abstract mapExpressionAttribute(attribute: string[], asString?: boolean): string;
duplicateExpression(expression: WebdaQL.Expression): WebdaQL.Expression;
/**
* @override
*/
find(query: WebdaQL.Query): Promise<{
results: T[];
continuationToken: string;
filter: WebdaQL.Expression;
}>;
/**
* @override
*/
_exists(uid: string): Promise<boolean>;
/**
* @override
*/
_get(uid: string, raiseIfNotFound?: boolean): Promise<T>;
/**
* @override
*/
getAll(list?: string[]): Promise<T[]>;
/**
*
* @param itemWriteCondition
* @param itemWriteConditionField
* @param offset parameter offset
*/
abstract getQueryCondition(itemWriteCondition: any, itemWriteConditionField: string, values: any[]): any;
/**
* @override
*/
_update(object: any, uid: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<any>;
getUuid(object: T | string | ModelLink<T>): string;
/**
* @override
*/
_save(object: T): Promise<any>;
__clean(): Promise<void>;
}