@meshwatch/backend-core
Version:
Meshwatch backend core services.
28 lines (27 loc) • 1.42 kB
TypeScript
import { CreateTableOutput } from 'aws-sdk/clients/dynamodb';
import { AWSError } from 'aws-sdk/lib/error';
import { PromiseResult } from 'aws-sdk/lib/request';
import { DynamoDBClient } from '../../shared/aws/dynamodb';
import { BaseUserInfo, CompleteGettingStartedTaskPayload, UserInfo } from './types';
import { USER_INFO_SORT_KEY } from './model';
export interface UserDatasource {
createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
getUserInfo(userId: string): Promise<UserInfo>;
completeGettingStartedTask(params: CompleteGettingStartedTaskPayload): Promise<UserInfo>;
insertUserInfoRow(Item: UserInfoDynamoRow): Promise<UserInfo>;
}
export declare class DynamoUserDatasource implements UserDatasource {
private dynamoClient;
constructor(dynamoClient?: DynamoDBClient);
createTable: () => Promise<PromiseResult<CreateTableOutput, AWSError>>;
getUserInfo: (userId: string) => Promise<UserInfo<Date>>;
completeGettingStartedTask: (params: CompleteGettingStartedTaskPayload) => Promise<UserInfo<Date>>;
insertUserInfoRow: (Item: UserInfoDynamoRow) => Promise<UserInfo<Date>>;
private userInfoFromDynamoRow;
}
interface UserInfoDynamoRow extends BaseUserInfo<number> {
hashKey: string;
sortKey: typeof USER_INFO_SORT_KEY;
}
declare const dynamoUserDatasource: DynamoUserDatasource;
export default dynamoUserDatasource;