import { type AttributeValue } from "@aws-sdk/client-dynamodb"; import { type Attribute } from "../attribute"; import { type DynamoAttributeTypes } from "../dynamo-attribute-types"; export interface IAttributeType { type: DynamoAttributeTypes; /** * Convert this attribute from the AttributeValue's value to the desired Value. */ fromDynamo: (attributeValue: AttributeValue, attribute: Attribute) => Value | null; /** * Convert this attribute from the desired Value into a saveable value DynamoDB will accept. */ toDynamo: (value: Value, attribute: Attribute) => AttributeValue; /** * Apply the default */ getDefault?: () => Value | null; /** * When calling .toJSON() on a Table record, this method will be used to help * convert this attribute into an exportable format. */ toJSON?: (value: any, attribute: Attribute) => any; /** * When calling Table.fromJSON, this method will be used to help convert a given * value into an appropriate attribute value. */ fromJSON?: (value: any) => Value; }