@webda/gcp
Version:
Webda GCP Services implementation
134 lines (133 loc) • 3.99 kB
TypeScript
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 };