Interface IndexedStorage<T>

A storage solution that allows for more complex queries than a key/value storage and allows setting indexes on specific keys.

Type Parameters

Hierarchy

  • IndexedStorage

Implemented by

Methods

  • Creates an object of the given type. The storage will generate an identifier for the newly created object.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type to create.

    • value: CreateTypeObject<T[TType]>

      The value to set for the created object.

    Returns Promise<TypeObject<T[TType]>>

    A representation of the newly created object, including its new identifier.

  • Creates an index on a key of the given type, to allow for better queries involving those keys. Similar to IndexedStorage.defineType these calls need to happen first.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type to create an index on.

    • key: StringKey<T[TType]>

      The key of that type to create an index on.

    Returns Promise<void>

  • Informs the storage of the definition of a specific type. A definition is a key/value object with the values being a valid ValueTypeDescription. Generally, this call needs to happen for every type of this storage, and before any calls are made to interact with the data.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type to define.

    • description: T[TType]

      A description of the values stored in objects of that type.

    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>

  • Returns an iterator over all objects of the given type.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type to iterate over.

    Returns AsyncIterableIterator<TypeObject<T[TType]>>

  • 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 a specific object. The identifier in the object is used to identify the object.

    Type Parameters

    • TType extends string

    Parameters

    • type: TType

      The type of the object to set.

    • value: TypeObject<T[TType]>

      The new value for the object.

    Returns Promise<void>

  • 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>