UNPKG

@moicky/dynamodb

Version:

Contains a collection of convenience functions for working with AWS DynamoDB

22 lines (21 loc) 1.09 kB
import { DynamoDBItem } from "../../types"; import { DynamoDBItemKey, ItemWithKey } from "../types"; export type DynamoDBReference<T extends DynamoDBItemKey = DynamoDBItemKey> = T extends any[] ? never : { _type: "dynamodb:reference"; _target: T; _refId: ReferenceMetadata["SK"]; }; export type ResolvedItem<T extends DynamoDBItem> = { [Key in keyof T]: NonNullable<T[Key]> extends DynamoDBReference ? T[Key]["_target"] | undefined : NonNullable<T[Key]> extends Set<DynamoDBReference<infer T>> ? Set<T | undefined> : T[Key] extends object ? ResolvedItem<T[Key]> : T[Key]; }; export type WithoutReferences<T extends DynamoDBItem> = { [Key in keyof T as NonNullable<T[Key]> extends DynamoDBReference | Set<DynamoDBReference> ? never : Key]: T[Key] extends object ? WithoutReferences<T[Key]> : T[Key]; }; export type ReferenceTo<T extends ItemWithKey> = T extends any[] ? void : DynamoDBReference<T>; export type ReferenceMetadata = { PK: "dynamodb:reference"; SK: string; item: DynamoDBItemKey; references: DynamoDBItemKey; onAttribute: string; };