UNPKG

@fabric-es/fabric-cqrs

Version:

Hyperledger Fabric middleware for event sourcing and cqrs pattern

87 lines (86 loc) 3.11 kB
import { Gateway, Network, Wallet } from 'fabric-network'; import { RedisPubSub } from 'graphql-redis-subscriptions'; import type { FTSearchParameters } from 'redis-modules-sdk'; import { Logger } from 'winston'; import type { Reducer, SaveFcn, Commit, FabricResponse, Paginated, RepoFcn, RepoFcn_Id, HandlerResponse } from '../../types'; import type { OutputCommit, QueryDatabase } from '.'; export declare type QueryHandlerOption = { connectionProfile: string; channelName: string; entityNames: string[]; gateway: Gateway; logger?: Logger; network: Network; pubSub?: RedisPubSub; queryDatabase: QueryDatabase; reducers: Record<string, Reducer>; wallet: Wallet; }; export declare type QueryHandler = { clearNotification: (option: { creator: string; entityName: string; id: string; commitId: string; }) => Promise<HandlerResponse<string[]>>; clearNotifications: (option: { creator: string; entityName?: string; id?: string; commitId?: string; }) => Promise<HandlerResponse<string[]>>; command_deleteByEntityId: (entityName: string) => RepoFcn_Id<FabricResponse>; command_getByEntityName: (entityName: string) => RepoFcn<Commit[]>; create: <TEvent>(entityName: string) => (option: { enrollmentId: string; id: string; }) => { save: SaveFcn<TEvent>; }; disconnect: () => void; fullTextSearchCommit: (option: { query: string; cursor: number; pagesize: number; param?: FTSearchParameters; }) => Promise<HandlerResponse<Paginated<OutputCommit>>>; fullTextSearchEntity: <TOutputEntity>(option: { entityName: string; query: string; cursor: number; pagesize: number; param?: FTSearchParameters; }) => Promise<HandlerResponse<Paginated<TOutputEntity>>>; getByEntityName: <TEntity = any>(entityName: string) => RepoFcn<TEntity[]>; getById: <TEntity, TEvent>(entityName: string) => (option: { enrollmentId: string; id: string; }) => Promise<{ currentState: TEntity; save: SaveFcn<TEvent>; }>; getCommitById: (entityName: string) => RepoFcn_Id<Commit[]>; getNotifications: (payload: { creator: string; entityName?: string; id?: string; }) => Promise<HandlerResponse<Record<string, string>>>; getNotification: (payload: { creator: string; entityName: string; id: string; commitId: string; }) => Promise<HandlerResponse<Record<string, string>>>; query_deleteCommitByEntityId: (entityName: string) => RepoFcn_Id<number>; query_deleteCommitByEntityName: (entityName: string) => RepoFcn<number>; query_deleteEntityByEntityName: (entityName: string) => RepoFcn<number>; reconcile: (payload: { entityName: string; }) => Promise<HandlerResponse<{ key: string; status: string; }[]>>; reconciled: () => void; subscribeHub: (entityNames: string[]) => Promise<any>; unsubscribeHub: () => void; };