UNPKG

functional-google-cloud

Version:

Google Cloud Utilities functions in Functional Programming Style

270 lines (269 loc) 9.54 kB
import { Firestore, CollectionReference, DocumentReference, DocumentSnapshot, Query, WhereFilterOp, Timestamp } from '@google-cloud/firestore'; import * as E from 'fp-ts/lib/Either'; import * as R from 'fp-ts/lib/Reader'; import * as RE from 'fp-ts/lib/ReaderEither'; import * as RT from 'fp-ts/lib/ReaderTask'; import * as RTE from 'fp-ts/lib/ReaderTaskEither'; import * as T from 'fp-ts/lib/Task'; import * as TE from 'fp-ts/lib/TaskEither'; import QuerySnapshot = FirebaseFirestore.QuerySnapshot; import QueryDocumentSnapshot = FirebaseFirestore.QueryDocumentSnapshot; export declare type Model<A = unknown> = { id: string; } & A; export declare type TimestampModel<A = unknown> = Model<A> & { created_at: Timestamp; updated_at: Timestamp; }; export declare type DateModel<A = unknown> = Model<A> & { created_at: Date; updated_at: Date; }; export declare type SerializedModel<A = unknown> = Model<A> & { created_at: string; updated_at: string; }; export declare type Operation = WhereFilterOp; export declare type Condition = [string, Operation, unknown]; /** * ```haskell * isModel :: a -> bool * ``` */ export declare const isModel: (a: unknown) => a is { id: string; }; /** * ```haskell * isTimestampModel :: a -> bool * ``` */ export declare const isTimestampModel: (a: unknown) => a is TimestampModel<unknown>; /** * ```haskell * isDateModel :: a -> bool * ``` */ export declare const isDateModel: (a: unknown) => a is DateModel<unknown>; /** * ```haskell * isDateString :: a -> bool * ``` */ export declare const isDateString: (a: unknown) => a is string; /** * ```haskell * isSerializedModel :: a -> bool * ``` */ export declare const isSerializedModel: (a: unknown) => a is SerializedModel<unknown>; /** * ```haskell * fromTimestampModel :: TimestampModel -> DateModel * ``` */ export declare const fromTimestampModel: <A = unknown>(model: TimestampModel<A>) => DateModel<A>; /** * ```haskell * fromDateModel :: DateModel -> TimestampModel * ``` */ export declare const fromDateModel: <A = unknown>(model: DateModel<A>) => TimestampModel<A>; /** * ```haskell * serializeDateModel :: DateModel -> SerializedModel * ``` */ export declare const serializeDateModel: <A = unknown>(model: DateModel<A>) => SerializedModel<A>; /** * ```haskell * serializeTimestampModel :: TimestampModel -> SerializedModel * ``` */ export declare const serializeTimestampModel: <A = unknown>(model: TimestampModel<A>) => SerializedModel<A>; /** * ```haskell * serialize :: Model -> Either SerializedModel Error * ``` */ export declare const serialize: <A = unknown>(model: Model<A>) => E.Either<Error, SerializedModel<A>>; /** * ```haskell * getCollectionFromFirestore :: Firestore -> Reader String Collection * ``` */ export declare const getCollectionFromFirestore: (firestore: Firestore) => R.Reader<string, CollectionReference>; /** * ```haskell * getDocumentFromCollection :: Collection -> Reader Model Document * ``` */ export declare const getDocumentFromCollection: (collection: CollectionReference) => R.Reader<Model, DocumentReference>; /** * ```haskell * getQueryFromCollection :: Collection -> Reader [Condition] Document Error * ``` */ export declare const getQueryFromCollection: (collection: CollectionReference) => RE.ReaderEither<Condition[], Error, Query>; /** * ```haskell * getCollectionFromDocument :: Document -> Reader String Collection * ``` */ export declare const getCollectionFromDocument: (document: DocumentReference) => R.Reader<string, CollectionReference>; /** * ```haskell * storeModelToDocument :: Document -> ReaderTaskEither Model Model Error * ``` */ export declare const storeModelToDocument: (document: DocumentReference) => RTE.ReaderTaskEither<Model, Error, Model>; /** * ```haskell * storeModelToCollection :: Collection -> String -> ReaderTaskEither Model Model Error * ``` */ export declare const storeModelToCollection: (collection: CollectionReference) => RTE.ReaderTaskEither<Model, Error, Model>; /** * ```haskell * storeModelToFirestore :: Firestore -> Reader String (ReaderTaskEither Model Model Error) * ``` */ export declare const storeModelToFirestore: (firestore: Firestore) => R.Reader<string, RTE.ReaderTaskEither<Model, Error, Model>>; /** * ```haskell * storeModelToFirestoreWith :: Firestore -> Reader String (ReaderTaskEither (() -> Model) Model Error) * ``` */ export declare const storeModelToFirestoreWith: <A>(firestore: Firestore) => R.Reader<string, R.Reader<(a: A) => Model, RTE.ReaderTaskEither<A, Error, Model>>>; /** * ```haskell * updateModelInDocumentTask :: Collection -> ReaderTask Model Model * ``` */ export declare const updateModelInDocumentTask: (document: DocumentReference) => RT.ReaderTask<Model, Model>; /** * ```haskell * updateModelInDocument :: Collection -> ReaderTaskEither Model Model Error * ``` */ export declare const updateModelInDocument: (document: DocumentReference) => RTE.ReaderTaskEither<Model, Error, Model>; /** * ```haskell * getSnapshotFromDocumentTask :: Document -> Task Snapshot * ``` */ export declare const getSnapshotFromDocumentTask: (document: DocumentReference) => T.Task<DocumentSnapshot>; /** * ```haskell * getSnapshotFromDocument :: Document -> TaskEither Snapshot Error * ``` */ export declare const getSnapshotFromDocument: (document: DocumentReference) => TE.TaskEither<Error, DocumentSnapshot>; /** * ```haskell * validateSnapshotExistence :: snapshot -> Either a Error * ``` */ export declare const validateSnapshotExistence: (snapshot: DocumentSnapshot) => E.Either<Error, DocumentSnapshot>; /** * ```haskell * validateModel :: a -> Either Model Error * ``` */ export declare const validateModel: (a: unknown) => E.Either<Error, Model>; /** * ```haskell * getModelFromCollection :: Collection -> ReaderTaskEither Model Model Error * ``` */ export declare const getModelFromCollection: (collection: CollectionReference) => RTE.ReaderTaskEither<Model, Error, Model>; /** * ```haskell * getModelFromFirestore :: Firestore -> Reader String (ReaderTaskEither Model Model Error) * ``` */ export declare const getModelFromFirestore: (firestore: Firestore) => R.Reader<string, RTE.ReaderTaskEither<Model, Error, Model>>; /** * ```haskell * listCollectionsInFirestore :: Firestore -> Task [Collection] * ``` */ export declare const listCollectionsInFirestore: (firestore: Firestore) => T.Task<CollectionReference[]>; /** * ```haskell * listDocumentsInCollectionTask :: Collection -> Task [Document] * ``` */ export declare const listDocumentsInCollectionTask: (collection: CollectionReference) => T.Task<DocumentReference[]>; /** * ```haskell * listDocumentsInCollection :: Collection -> TaskEither [Document] Error * ``` */ export declare const listDocumentsInCollection: (collection: CollectionReference) => TE.TaskEither<Error, DocumentReference[]>; /** * ```haskell * listDocumentsInFirestore :: Firestore ReaderTaskEither String [Document] Error * ``` */ export declare const listDocumentsInFirestore: (firestore: Firestore) => RTE.ReaderTaskEither<string, Error, DocumentReference[]>; /** * ```haskell * getModelFromDocument :: Document -> TaskEither Model Error * ``` */ export declare const getModelFromDocument: (document: DocumentReference) => TE.TaskEither<Error, Model>; /** * ```haskell * getSnapshotFromQueryTask :: Query -> Task Snapshot * ``` */ export declare const getSnapshotFromQueryTask: (query: Query) => T.Task<QuerySnapshot>; /** * ```haskell * getSnapshotFromQuery :: Query -> TaskEither Snapshot Error * ``` */ export declare const getSnapshotFromQuery: (query: Query) => TE.TaskEither<Error, QuerySnapshot>; /** * ```haskell * getDocumentSnapshotsFromQuerySnapshot :: QuerySnapshot -> [DocumentSnapshot] * ``` */ export declare const getDocumentSnapshotsFromQuerySnapshot: (snapshot: QuerySnapshot) => QueryDocumentSnapshot[]; /** * ```haskell * getModelsFromQuerySnapshot :: QuerySnapshot -> Either [Model] Error * ``` */ export declare const getModelsFromQuerySnapshot: (snapshot: QuerySnapshot) => E.Either<Error, Model[]>; /** * ```haskell * getModelsFromQuery :: Query -> TaskEither [Model] Error * ``` */ export declare const getModelsFromQuery: (query: Query) => TE.TaskEither<Error, Model[]>; /** * ```haskell * getModelsInCollectionWhere :: Collection -> ReaderTaskEither [Condition] [Model] Error * ``` */ export declare const getModelsInCollectionWhere: (collection: CollectionReference) => RTE.ReaderTaskEither<Condition[], Error, Model[]>; /** * ```haskell * getModelsInFirestoreWhere :: Firestore -> Reader String (ReaderTaskEither [Condition] [Model] Error) * ``` */ export declare const getModelsInFirestoreWhere: (firestore: Firestore) => R.Reader<string, RTE.ReaderTaskEither<Condition[], Error, Model[]>>; /** * ```haskell * getModelsInCollection :: Collection -> TaskEither [Model] Error * ``` */ export declare const getModelsInCollection: (collection: CollectionReference) => TE.TaskEither<Error, Model[]>; /** * ```haskell * getModelsInFirestore :: Firestore -> ReaderTaskEither String [Model] Error * ``` */ export declare const getModelsInFirestore: (firestore: Firestore) => RTE.ReaderTaskEither<string, Error, Model[]>;