Class ProxyStorageService<T, ModelType>

class: ProxyStorageService

  • support nextSeq(), doLock(), doRelease()
  • proxed storage-service to wrap the parent storage-service w/ more features.
  • table is supposed to have internal-key as _id string.

Usage

type MyType = '' | 'test';
interface MyModel extends CoreModel<MyType>{
name?: string;
}
const storage = new ProxyStorageService<MyModel, MyType>(this, 'TestTable', ['id','name']);
const $test = storage.makeTypedStorageService('test');

Type Parameters

  • T extends CoreModel<ModelType>

  • ModelType extends string

Hierarchy

  • ProxyStorageService

Implements

Constructors

Properties

$timer: (() => number) = null

Type declaration

    • (): number
    • timer to generate the current-time (msec)

      Returns number

idName: string
service: CoreKeyMakeable<ModelType>
storage: StorageService<T>
AUTO_SEQUENCE: 1000000 = 1000000
TYPE_SEQUENCE: "sequence" = 'sequence'

Methods

  • get time-stamp as now.

    Parameters

    • Optional currentTime: number

    Returns { createdAt: number; deletedAt: number; updatedAt: number }

    • createdAt: number
    • deletedAt: number
    • updatedAt: number
  • delete model by id.

    Parameters

    • type: ModelType

      model-type

    • id: string

      node-id

    • destroy: boolean = true

      flag to destroy (real delete)

    Returns Promise<T>

  • update model (or it will create automatically)

    Parameters

    • type: ModelType

      model-type

    • id: string

      node-id

    • $inc: T
    • $up: T

    Returns Promise<T>

  • lock data-entry by type+id w/ limited time tick

    • WARN! must release lock by doRelease()

    total-waited-time = tick * interval (msec)

    Parameters

    • type: ModelType

      model-type

    • id: string

      model-id

    • Optional tick: number

      tick count to wait.

    • Optional interval: number

      timeout interval per each tick (in msec, default 1000 = 1sec)

    Returns Promise<boolean>

  • read model by key + id with optional auto creation.

    Parameters

    • type: ModelType

      model-type

    • id: string

      node-id

    • Optional $create: T

      (optional) initial model if not exist. (or throw 404 error)

    Returns Promise<T>

  • release lock by resetting lock = 0.

    Parameters

    • type: ModelType

      model-type

    • id: string

      model-id

    Returns Promise<boolean>

  • save model by checking origin node.

    • use doSave() rather than doUpdate() for both create & update.
    • if $create is null, throw 404 error it if not found.

    Parameters

    • type: ModelType

      model-type

    • id: string

      node-id

    • node: T

      node to save (or update)

    • Optional $create: T

      (optional) initial creation model if not found.

    Returns Promise<T>

  • update model (or it will create automatically)

    Parameters

    • type: ModelType

      model-type

    • id: string

      node-id

    • node: T

      model

    • Optional incrementals: T

      (optional) fields to increment

    Returns Promise<T>

  • get next auto-sequence number.

    Parameters

    • type: ModelType

      type of seqeunce.

    • Optional nextInit: number

      (optional) initial next value if not exist.

    • nextStep: number = 1

      (optional) the incremental step to get next. (default 1)

    Returns Promise<number>

  • Parameters

    • timer: (() => number)
        • (): number
        • Returns number

    Returns (() => number)

      • (): number
      • timer to generate the current-time (msec)

        Returns number

  • create storage-service w/ fields list.

    • idName should be _id

    Type Parameters

    • T

    Parameters

    • table: string

      table-name or dummy file name (ex: dummy-data.yml).

    • Optional fields: string[]

      required for dynamo table.

    • Optional idName: string

      internal partition-key name (default '_id')

    Returns StorageService<T>

Generated using TypeDoc