UNPKG

arrow-store

Version:
83 lines (82 loc) 4.7 kB
export declare abstract class DynamoDBRecordSchemaSourceBase<TRecord extends {}> { abstract getSchema(): ReadonlyMap<string, DynamoDBAttributeSchema>; } export interface DynamoDBRecordSchemaBuilder<TRecord> { forMember<TMember>(memberAccessor: (record: TRecord) => TMember, map: (attribute: DynamoDBMemberSchemaBuilder<TMember>) => void): DynamoDBRecordSchemaBuilder<TRecord>; getRecordSchema(): ReadonlyMap<string, DynamoDBAttributeSchema>; } export interface DynamoDBMemberSchemaBuilder<TMember> { asObject(attributeName: string, map: (attribute: DynamoDBRecordSchemaBuilder<TMember>) => DynamoDBRecordSchemaBuilder<TMember>): void; asNumber(attributeName: string): void; asString(attributeName: string): void; asStringsList(attributeName: string): void; asNumbersList(attributeName: string): void; asObjectsList(attributeName: string): void; asBool(attributeName: string): void; getMemberSchema(): ReadonlyMap<string, DynamoDBAttributeSchema>; } export declare class DefaultSchemaSource extends DynamoDBRecordSchemaSourceBase<any> { private readonly _schema; constructor(schema: ReadonlyMap<string, DynamoDBAttributeSchema>); getSchema(): ReadonlyMap<string, DynamoDBAttributeSchema>; } export declare type DynamoDBSchemaProvider = { getReadingSchema(recordTypeId: string): ReadonlyMap<string, DynamoDBAttributeSchema>; getWritingSchema(recordTypeId: string): ReadonlyMap<string, DynamoDBAttributeSchema>; }; export declare class DefaultSchemaProvider implements DynamoDBSchemaProvider { private readonly _readingSchemaSources; private readonly _writingSchemaSources; constructor(readingSchemaSources: ReadonlyMap<string, DynamoDBRecordSchemaSourceBase<any>>, writingSchemaSources: ReadonlyMap<string, DynamoDBRecordSchemaSourceBase<any>>); getReadingSchema(recordTypeId: string): ReadonlyMap<string, DynamoDBAttributeSchema>; getWritingSchema(recordTypeId: string): ReadonlyMap<string, DynamoDBAttributeSchema>; } export declare type MappingBuilder = { use<TRecord extends {}>(typeId: string, schemaSource: DynamoDBRecordSchemaSourceBase<TRecord>): void; createReaderFor<TRecord extends {}>(typeId: string): DynamoDBRecordSchemaBuilder<TRecord>; createWriterFor<TRecord extends {}>(typeId: string): DynamoDBRecordSchemaBuilder<TRecord>; }; export declare type DynamoDBMappingProfile = { register(builder: MappingBuilder): void; }; export declare type DYNAMODB_ATTRIBUTE_TYPE = "S" | "N" | "B" | "SS" | "NS" | "BS" | "M" | "L" | "NULL" | "BOOL"; export declare type DynamoDBAttributeSchema = { attributeName: string; attributeType: DYNAMODB_ATTRIBUTE_TYPE; lastChildAttributeType: DYNAMODB_ATTRIBUTE_TYPE; nested?: DynamoDBAttributeSchema; }; export declare class DynamoDBMappingBuilder implements MappingBuilder { private readonly _fromAttributeReaders; private readonly _toAttributeWriters; private readonly _readingSchemaSources; private readonly _writingSchemaSources; constructor(); createReaderFor<TRecord extends {}>(typeId: string): DynamoDBRecordSchemaBuilder<TRecord>; createWriterFor<TRecord extends {}>(typeId: string): DynamoDBRecordSchemaBuilder<TRecord>; use<TRecord extends {}>(typeId: string, schemaSource: DynamoDBRecordSchemaSourceBase<TRecord>): void; buildSchemaProvider(): DynamoDBSchemaProvider; } export declare class DynamoDBMemberBuilder<TMember> implements DynamoDBMemberSchemaBuilder<TMember> { private readonly _memberName; private readonly _attributeSchema; constructor(memberName: string); asBool(attributeName: string): void; asNumber(attributeName: string): void; asNumbersList(attributeName: string): void; asObject(attributeName: string, map: (attribute: DynamoDBRecordSchemaBuilder<TMember>) => DynamoDBRecordSchemaBuilder<TMember>): void; asObjectsList(attributeName: string): void; asString(attributeName: string): void; asStringsList(attributeName: string): void; getMemberSchema(): ReadonlyMap<string, DynamoDBAttributeSchema>; private _asTopLevel; private _asLastType; } export declare class AttributeSchemaBuilder<TRecord extends {}> implements DynamoDBRecordSchemaBuilder<TRecord> { private static readonly _ReadMemberHandler; private readonly _proxyRecord; private readonly _membersSchema; constructor(); forMember<TMember>(memberAccessor: (record: TRecord) => TMember, map: (attribute: DynamoDBMemberSchemaBuilder<TMember>) => void): DynamoDBRecordSchemaBuilder<TRecord>; getRecordSchema(): ReadonlyMap<string, DynamoDBAttributeSchema>; }