UNPKG

@hotmeshio/hotmesh

Version:

Serverless Workflow

90 lines (89 loc) 6.42 kB
import { KeyStoreParams, KeyType } from '../../modules/key'; import { ILogger } from '../logger'; import { SerializerService as Serializer } from '../serializer'; import { Consumes } from '../../types/activity'; import { AppVID } from '../../types/app'; import { HookRule, HookSignal } from '../../types/hook'; import { HotMeshApps, HotMeshSettings } from '../../types/hotmesh'; import { ProviderClient, ProviderTransaction } from '../../types/provider'; import { ThrottleOptions } from '../../types/quorum'; import { StringAnyType, Symbols, StringStringType, SymbolSets } from '../../types/serializer'; import { IdsData, JobStatsRange, StatsType } from '../../types/stats'; import { WorkListTaskType } from '../../types/task'; import { Cache } from './cache'; declare abstract class StoreService<Provider extends ProviderClient, TransactionProvider extends ProviderTransaction> { storeClient: Provider; namespace: string; appId: string; logger: ILogger; cache: Cache; serializer: Serializer; constructor(client: Provider); abstract transact(): TransactionProvider; abstract init(namespace: string, appId: string, logger: ILogger): Promise<HotMeshApps>; abstract mintKey(type: KeyType, params: KeyStoreParams): string; abstract getSettings(bCreate?: boolean): Promise<HotMeshSettings>; abstract setSettings(manifest: HotMeshSettings): Promise<any>; abstract getApp(id: string, refresh?: boolean): Promise<any>; abstract setApp(id: string, version: string): Promise<any>; abstract activateAppVersion(id: string, version: string): Promise<boolean>; abstract reserveScoutRole(scoutType: 'time' | 'signal' | 'activate', delay?: number): Promise<boolean>; abstract releaseScoutRole(scoutType: 'time' | 'signal' | 'activate'): Promise<boolean>; abstract reserveSymbolRange(target: string, size: number, type: 'JOB' | 'ACTIVITY', tryCount?: number): Promise<[number, number, Symbols]>; abstract getSymbols(activityId: string): Promise<Symbols>; abstract addSymbols(activityId: string, symbols: Symbols): Promise<boolean>; abstract getSymbolValues(): Promise<Symbols>; abstract addSymbolValues(symvals: Symbols): Promise<boolean>; abstract getSymbolKeys(symbolNames: string[]): Promise<SymbolSets>; abstract setStats(jobKey: string, jobId: string, dateTime: string, stats: StatsType, appVersion: AppVID, transaction?: TransactionProvider): Promise<any>; abstract getJobStats(jobKeys: string[]): Promise<JobStatsRange>; abstract getJobIds(indexKeys: string[], idRange: [number, number]): Promise<IdsData>; abstract setStatus(collationKeyStatus: number, jobId: string, appId: string, transaction?: TransactionProvider): Promise<any>; abstract getStatus(jobId: string, appId: string): Promise<number>; abstract setStateNX(jobId: string, appId: string, status?: number): Promise<boolean>; abstract setState(state: StringAnyType, status: number | null, jobId: string, symbolNames: string[], dIds: StringStringType, transaction?: TransactionProvider): Promise<string>; abstract getQueryState(jobId: string, fields: string[]): Promise<StringAnyType>; abstract getState(jobId: string, consumes: Consumes, dIds: StringStringType): Promise<[StringAnyType, number] | undefined>; abstract getRaw(jobId: string): Promise<StringStringType>; abstract collate(jobId: string, activityId: string, amount: number, dIds: StringStringType, transaction?: TransactionProvider): Promise<number>; abstract collateSynthetic(jobId: string, guid: string, amount: number, transaction?: TransactionProvider): Promise<number>; abstract getSchema(activityId: string, appVersion: AppVID): Promise<any>; abstract getSchemas(appVersion: AppVID): Promise<Record<string, any>>; abstract setSchemas(schemas: Record<string, any>, appVersion: AppVID): Promise<any>; abstract setSubscriptions(subscriptions: Record<string, any>, appVersion: AppVID): Promise<boolean>; abstract getSubscriptions(appVersion: AppVID): Promise<Record<string, any>>; abstract getSubscription(topic: string, appVersion: AppVID): Promise<string | undefined>; abstract setTransitions(transitions: Record<string, any>, appVersion: AppVID): Promise<any>; abstract getTransitions(appVersion: AppVID): Promise<any>; abstract setHookRules(hookRules: Record<string, HookRule[]>): Promise<any>; abstract getHookRules(): Promise<Record<string, HookRule[]>>; abstract getAllSymbols(): Promise<Symbols>; abstract setHookSignal(hook: HookSignal, transaction?: TransactionProvider): Promise<any>; abstract getHookSignal(topic: string, resolved: string): Promise<string | undefined>; abstract deleteHookSignal(topic: string, resolved: string): Promise<number | undefined>; abstract addTaskQueues(keys: string[]): Promise<void>; abstract getActiveTaskQueue(): Promise<string | null>; abstract deleteProcessedTaskQueue(workItemKey: string, key: string, processedKey: string, scrub?: boolean): Promise<void>; abstract processTaskQueue(sourceKey: string, destinationKey: string): Promise<any>; abstract expireJob(jobId: string, inSeconds: number, redisMulti?: TransactionProvider): Promise<void>; abstract getDependencies(jobId: string): Promise<string[]>; abstract delistSignalKey(key: string, target: string): Promise<void>; abstract registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, deletionTime: number, dad: string, transaction?: TransactionProvider): Promise<void>; abstract getNextTask(listKey?: string): Promise<[ listKey: string, jobId: string, gId: string, activityId: string, type: WorkListTaskType ] | boolean>; abstract interrupt(topic: string, jobId: string, options: { [key: string]: any; }): Promise<void>; abstract scrub(jobId: string): Promise<void>; abstract findJobs(queryString?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, string[]]>; abstract findJobFields(jobId: string, fieldMatchPattern?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, StringStringType]>; abstract setThrottleRate(options: ThrottleOptions): Promise<void>; abstract getThrottleRates(): Promise<StringStringType>; abstract getThrottleRate(topic: string): Promise<number>; } export { StoreService };