@meshwatch/backend-core
Version:
Meshwatch backend core services.
28 lines (27 loc) • 1.41 kB
TypeScript
import DynamoDB, { CreateTableOutput, DocumentClient } from 'aws-sdk/clients/dynamodb';
import { AWSError } from 'aws-sdk/lib/error';
import { PromiseResult } from 'aws-sdk/lib/request';
import { BaseUserInfo, CompleteGettingStartedTaskPayload, UserInfo } from './types';
export interface UserStorage {
createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
getUserInfo(userId: string): Promise<UserInfo>;
completeGettingStartedTask(params: CompleteGettingStartedTaskPayload): Promise<UserInfo>;
insertUserInfoRow(Item: UserInfoRow): Promise<UserInfo>;
}
export declare class DynamoUserStorage implements UserStorage {
private documentClient;
private dynamoDB;
constructor(documentClient?: DocumentClient, dynamoDB?: DynamoDB);
createTable: () => Promise<PromiseResult<DynamoDB.CreateTableOutput, AWSError>>;
getUserInfo: (userId: string) => Promise<UserInfo<Date>>;
completeGettingStartedTask: ({ userId, taskName, completedOn, }: CompleteGettingStartedTaskPayload) => Promise<UserInfo<Date>>;
insertUserInfoRow: (Item: UserInfoRow) => Promise<UserInfo<Date>>;
private userInfoFromDynamoRow;
private encodeHashKey;
private decodeHashKey;
}
export interface UserInfoRow extends BaseUserInfo<number> {
hashKey: string;
}
declare const dynamoUserStorage: DynamoUserStorage;
export default dynamoUserStorage;