Class EntityManager<M, HashKey, RangeKey, T>

The EntityManager class applies a configuration-driven sharded data model & query strategy to NoSql data.

Type Parameters

Constructors

Accessors

Methods

Constructors

Accessors

  • get config(): {
        entities: Record<string, {
            defaultLimit: number;
            defaultPageSize: number;
            elementTranscodes: Record<string, string>;
            generated: Record<string, undefined | {
                atomic: boolean;
                elements: [string, ...string[]];
                sharded: boolean;
            }>;
            indexes: Record<string, [string, ...string[]]>;
            shardBumps: {
                charBits: number;
                chars: number;
                timestamp: number;
            }[];
            timestampProperty: string;
            uniqueProperty: string;
        }>;
        generatedKeyDelimiter: string;
        generatedValueDelimiter: string;
        hashKey: string;
        rangeKey: string;
        shardKeyDelimiter: string;
        throttle: number;
        transcodes: Record<string, {
            decode: ((...args: [string, ...unknown[]]) => any);
            encode: ((...args: [any, ...unknown[]]) => string);
        }>;
    }
  • Get the current EntityManager Config object.

    Returns {
        entities: Record<string, {
            defaultLimit: number;
            defaultPageSize: number;
            elementTranscodes: Record<string, string>;
            generated: Record<string, undefined | {
                atomic: boolean;
                elements: [string, ...string[]];
                sharded: boolean;
            }>;
            indexes: Record<string, [string, ...string[]]>;
            shardBumps: {
                charBits: number;
                chars: number;
                timestamp: number;
            }[];
            timestampProperty: string;
            uniqueProperty: string;
        }>;
        generatedKeyDelimiter: string;
        generatedValueDelimiter: string;
        hashKey: string;
        rangeKey: string;
        shardKeyDelimiter: string;
        throttle: number;
        transcodes: Record<string, {
            decode: ((...args: [string, ...unknown[]]) => any);
            encode: ((...args: [any, ...unknown[]]) => string);
        }>;
    }

    Current Config object.

    • entities: Record<string, {
          defaultLimit: number;
          defaultPageSize: number;
          elementTranscodes: Record<string, string>;
          generated: Record<string, undefined | {
              atomic: boolean;
              elements: [string, ...string[]];
              sharded: boolean;
          }>;
          indexes: Record<string, [string, ...string[]]>;
          shardBumps: {
              charBits: number;
              chars: number;
              timestamp: number;
          }[];
          timestampProperty: string;
          uniqueProperty: string;
      }>
    • generatedKeyDelimiter: string
    • generatedValueDelimiter: string
    • hashKey: string
    • rangeKey: string
    • shardKeyDelimiter: string
    • throttle: number
    • transcodes: Record<string, {
          decode: ((...args: [string, ...unknown[]]) => any);
          encode: ((...args: [any, ...unknown[]]) => string);
      }>
  • set config(value): void
  • Set the current EntityManager Config object.

    Parameters

    • value: {
          entities: Record<string, {
              defaultLimit: number;
              defaultPageSize: number;
              elementTranscodes: Record<string, string>;
              generated: Record<string, undefined | {
                  atomic: boolean;
                  elements: [string, ...string[]];
                  sharded: boolean;
              }>;
              indexes: Record<string, [string, ...string[]]>;
              shardBumps: {
                  charBits: number;
                  chars: number;
                  timestamp: number;
              }[];
              timestampProperty: string;
              uniqueProperty: string;
          }>;
          generatedKeyDelimiter: string;
          generatedValueDelimiter: string;
          hashKey: string;
          rangeKey: string;
          shardKeyDelimiter: string;
          throttle: number;
          transcodes: Record<string, {
              decode: ((...args: [string, ...unknown[]]) => any);
              encode: ((...args: [any, ...unknown[]]) => string);
          }>;
      }

      Config object.

      • entities: Record<string, {
            defaultLimit: number;
            defaultPageSize: number;
            elementTranscodes: Record<string, string>;
            generated: Record<string, undefined | {
                atomic: boolean;
                elements: [string, ...string[]];
                sharded: boolean;
            }>;
            indexes: Record<string, [string, ...string[]]>;
            shardBumps: {
                charBits: number;
                chars: number;
                timestamp: number;
            }[];
            timestampProperty: string;
            uniqueProperty: string;
        }>
      • generatedKeyDelimiter: string
      • generatedValueDelimiter: string
      • hashKey: string
      • rangeKey: string
      • shardKeyDelimiter: string
      • throttle: number
      • transcodes: Record<string, {
            decode: ((...args: [string, ...unknown[]]) => any);
            encode: ((...args: [any, ...unknown[]]) => string);
        }>

    Returns void

Methods

  • Update generated properties, hash key, and range key on an ItemMap object. Mutates item.

    Type Parameters

    • Item extends Unwrap<{
          [P in string | number | symbol]: [NonNullable<M[EntityToken][P]>] extends [never]
              ? string
              : M[EntityToken][P]
      } & {
          [P in string]?: string
      }>
    • EntityToken extends string

    Parameters

    Returns Item

    Mutated item with updated properties.

    Error if entityToken is invalid.