UNPKG

@webda/gcp

Version:

Webda GCP Services implementation

134 lines (133 loc) 3.99 kB
import { DocumentReference, Firestore } from "@google-cloud/firestore"; import { CoreModel, DeepPartial, Store, StoreFindResult, StoreParameters, WebdaQL } from "@webda/core"; /** * Definition of a FireStore index */ export type FireStoreIndex = { [key: string]: "asc" | "desc"; }; /** * Stored version of indexes */ export type FireStoreIndexOrder = { [key: string]: Set<"asc" | "desc">; }; /** * Firebase parameters */ export declare class FireStoreParameters extends StoreParameters { /** * Collection to use */ collection: string; /** * To allow efficient query on several fields * * @see https://firebase.google.com/docs/firestore/query-data/queries */ compoundIndexes: FireStoreIndex[]; constructor(params: DeepPartial<FireStoreParameters>, service: Store); } /** * Implement Firebase abstraction within Webda * * @WebdaModda GoogleCloudFireStore */ export default class FireStore<T extends CoreModel = CoreModel, K extends FireStoreParameters = FireStoreParameters> extends Store<T, K> { firestore: Firestore; compoundIndexes: { [key: string]: FireStoreIndexOrder; }; /** * @override */ loadParameters(params: DeepPartial<K>): FireStoreParameters; /** * @override */ init(): Promise<this>; /** * Get Document Reference * @param uuid * @param collection * @returns */ getDocumentRef(uuid: string, collection?: string): DocumentReference; /** * @override * * Return all for now */ find(parsedQuery: WebdaQL.Query): Promise<StoreFindResult<T>>; /** * Manage OrderBy complex condition on Firebase * @param query * @param orderBy * @param rangeAttribute * @param index */ handleOrderBy(query: FirebaseFirestore.Query<FirebaseFirestore.DocumentData>, orderBy: WebdaQL.OrderBy[], rangeAttribute: string): FirebaseFirestore.Query<FirebaseFirestore.DocumentData>; /** * @override */ _exists(uid: string): Promise<boolean>; /** * @override */ _delete(uid: string, writeCondition?: any, itemWriteConditionField?: string): Promise<void>; /** * Recursively replace Timestamp by Date * @param doc * @returns */ giveDatesBack(doc: any): any; /** * @override */ _get(uid: string, raiseIfNotFound?: boolean): Promise<T>; /** * @override */ getAll(list?: string[]): Promise<T[]>; /** * @override */ _update(object: any, uid: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<any>; protected checkCondition(uid: string, data: any, field: string, condition: any): void; /*** * Internal function that implement both update and patch */ protected _setDocument(merge: boolean, object: any, uid: string, itemWriteCondition?: any, itemWriteConditionField?: string): Promise<void>; /** * @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 */ _save(object: T): Promise<any>; /** * @override */ _incrementAttributes(uid: string, params: { property: string; value: number; }[], updateDate: Date): Promise<any>; /** * @override */ _upsertItemToCollection(uid: string, prop: string, item: any, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<any>; /** * @override */ _deleteItemFromCollection(uid: string, prop: string, index: number, itemWriteCondition: any, itemWriteConditionField: string, updateDate: Date): Promise<any>; /** * @override */ __clean(): Promise<void>; } export { FireStore };