arrow-store
Version:
TypeScript DynamoDB ORM
83 lines (82 loc) • 4.7 kB
TypeScript
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>;
}