functional-google-cloud
Version:
Google Cloud Utilities functions in Functional Programming Style
270 lines (269 loc) • 9.54 kB
TypeScript
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[]>;