UNPKG

duenamodb

Version:

Simple, strongly-typed helpers around the AWS SDK DynamoDB client.

65 lines (64 loc) 4.15 kB
import type { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; import type { DynamoDBTypes, SK } from "./types"; export declare const expressionAttributeNameKey: (key: string) => string; export declare const expressionAttributeValueKey: (key: string) => string; export declare const expressionAttributeNames: (names: string[]) => Record<string, string> | undefined; export declare const expressionAttributeValues: <Attributes extends DynamoDBTypes, Options extends FilterCondition<Attributes>>(options: Options) => Record<string, NativeAttributeValue> | undefined; export declare const conditionExpression: <Attributes extends DynamoDBTypes, Options extends FilterCondition<Attributes>>(options: Options) => string | undefined; type NotExpression<Value extends NativeAttributeValue> = { duenamoType: "not"; value: Value; }; export declare const NOT: <Value extends unknown>(value: Value) => NotExpression<Value>; type InExpression<Value extends NativeAttributeValue> = { duenamoType: "in"; value: Value[]; }; export declare const IN: <Value extends unknown>(...value: Value[]) => InExpression<Value>; type AndExpression<Value extends NativeAttributeValue> = { duenamoType: "and"; value: DuenamoExpression<Value>[]; }; export declare const AND: <Attribute extends unknown>(...value: DuenamoExpression<Attribute>[]) => AndExpression<Attribute>; type DuenamoExpression<Value extends NativeAttributeValue> = NotExpression<Value> | InExpression<Value> | AndExpression<Value> | IsLessExpression<Value> | IsGreaterExpression<Value> | IsLessOrEqualExpression<Value> | IsGreaterOrEqualExpression<Value> | IsBetweenExpression<Value> | BeginsWithExpression<Value>; export type FilterCondition<Attributes extends DynamoDBTypes> = { [Key in keyof Attributes]?: Attributes[Key] | NotExpression<Attributes[Key]> | InExpression<Attributes[Key]> | AndExpression<Attributes[Key]> | IsLessExpression<Attributes[Key]> | IsGreaterExpression<Attributes[Key]> | IsLessOrEqualExpression<Attributes[Key]> | IsGreaterOrEqualExpression<Attributes[Key]> | IsBetweenExpression<Attributes[Key]> | BeginsWithExpression<Attributes[Key]>; }; export declare const createConditionExpression: <Attributes extends DynamoDBTypes, Options extends FilterCondition<Attributes>>(object: Options) => { attributeNames: Record<string, string> | undefined; attributeValues: Record<string, any> | undefined; expression: string | undefined; }; type IsLessExpression<Value extends NativeAttributeValue> = { duenamoType: "is_less_than"; value: Value; }; export declare const IS_LESS_THAN: <Value extends unknown>(value: Value) => IsLessExpression<Value>; type IsGreaterExpression<Value extends NativeAttributeValue> = { duenamoType: "is_greater_than"; value: Value; }; export declare const IS_GREATER_THAN: <Value extends unknown>(value: Value) => IsGreaterExpression<Value>; type IsLessOrEqualExpression<Value extends NativeAttributeValue> = { duenamoType: "is_less_or_equal"; value: Value; }; export declare const IS_LESS_OR_EQUAL_THAN: <Value extends unknown>(value: Value) => IsLessOrEqualExpression<Value>; type IsGreaterOrEqualExpression<Value extends NativeAttributeValue> = { duenamoType: "is_greater_or_equal"; value: Value; }; export declare const IS_GREATER_OR_EQUAL_THAN: <Value extends unknown>(value: Value) => IsGreaterOrEqualExpression<Value>; type IsBetweenExpression<Value extends NativeAttributeValue> = { duenamoType: "is_between"; value1: Value; value2: Value; }; export declare const IS_BETWEEN: <Value extends unknown>(value1: Value, value2: Value) => IsBetweenExpression<Value>; type BeginsWithExpression<Value extends NativeAttributeValue> = { duenamoType: "begins_with"; value: Value; }; export declare const BEGINS_WITH: <Value extends unknown>(value: Value) => BeginsWithExpression<Value>; export type SortKeyCondition<TSK extends SK> = TSK extends number ? TSK | IsLessExpression<TSK> | IsGreaterExpression<TSK> | IsLessOrEqualExpression<TSK> | IsGreaterOrEqualExpression<TSK> | IsBetweenExpression<TSK> : TSK extends string ? TSK | BeginsWithExpression<TSK> : TSK; export {};