Class BaseLoginAccountStorage<T>

A LoginStorage that wraps around another IndexedStorage to add specific account requirements.

  • New accounts will be removed after expiration time, in seconds, default is 1800, if no login method was added to them in that time.
  • Non-login types can not be created until the associated account has at least 1 login method.
  • Login types can not be deleted if they are the last login of the associated account.

All of this is tracked by adding a new field to the account object, that keeps track of how many login objects are associated with the account.

Type Parameters

Hierarchy

  • BaseLoginAccountStorage

Implements

Constructors

Properties

accountKeys: Dict<string>
expiration: number
logger: Logger = ...
loginTypes: string[]
storage: IndexedStorage<T>

Methods

  • Makes sure of the operation, adding or removing an object of the given type, is allowed, based on the current amount of login methods on the given account.

    Parameters

    • type: string
    • accountId: string
    • add: boolean

    Returns Promise<void>

  • Defines a type in the storage, just like in an IndexedStorage, but additionally it needs to be indicated if the type corresponds to a login method or not.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      Type to define.

    • description: T[TType]

      Description of the type.

    • isLogin: boolean

      Whether this type corresponds to a login method or not.

    Returns Promise<void>

  • Deletes the given object. This will also delete all objects that reference that object if the corresponding key is not optional.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type of the object to delete.

    • id: string

      The identifier of the object.

    Returns Promise<void>

  • Finds all objects matching a specific IndexedQuery.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type of objects to find.

    • query: {
          [K in string | number | symbol]?: ValueType<T[TType][K]> | (T[TType][K] extends `id:${U}`
              ? ({ [K in "id" | keyof T[U]]?: ValueType<T[U][K]> | (T[U][K] extends `id:${infer U}` ? { [K in "id" | keyof T[U]]?: ValueType<T[U][K]> | (T[U][K] extends `id:${infer U}` ? { [K in "id" | keyof T[U]]?: ValueType<...> | ... 1 more ... | undefined; } : never) | undefined; } : never) | undefined; })
              : never)
      }

      The query to execute.

    Returns Promise<TypeObject<T[TType]>[]>

    A list of objects matching the query.

  • Similar to IndexedStorage.find, but only returns the identifiers of the found objects.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type of objects to find.

    • query: {
          [K in string | number | symbol]?: ValueType<T[TType][K]> | (T[TType][K] extends `id:${U}`
              ? ({ [K in "id" | keyof T[U]]?: ValueType<T[U][K]> | (T[U][K] extends `id:${infer U}` ? { [K in "id" | keyof T[U]]?: ValueType<T[U][K]> | (T[U][K] extends `id:${infer U}` ? { [K in "id" | keyof T[U]]?: ValueType<...> | ... 1 more ... | undefined; } : never) | undefined; } : never) | undefined; })
              : never)
      }

      The query to execute.

    Returns Promise<string[]>

    A list of identifiers of the matching objects.

  • Returns the object of the given type with the given identifier.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type of object to get.

    • id: string

      The identifier of that object.

    Returns Promise<undefined | TypeObject<T[TType]>>

    A representation of the object, or undefined if there is no object of that type with that identifier.

  • Returns true if the object of the given type with the given identifier exists.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type of object to get.

    • id: string

      The identifier of that object.

    Returns Promise<boolean>

    Whether this object exists.

  • Sets the value of one specific field in an object.

    Type Parameters

    • TType extends string

    • TKey extends string

    Parameters

    • type: TType

      The type of the object to update.

    • id: string

      The identifier of the object to update.

    • key: TKey

      The key to update.

    • value: ValueType<T[TType][TKey]>

      The new value for the given key.

    Returns Promise<void>