Class ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>Abstract

A readonly entity exposes only the read functionality of an Entity. Used as the base type for most entity operations excluding mutations.

This is also useful as a base class for Entities that should not be mutated, such as:

  • Entities representing SQL views.
  • Entities representing immutable tables.

Type Parameters

  • TFields extends object

  • TID extends NonNullable<TFields[TSelectedFields]>

  • TViewerContext extends ViewerContext

  • TSelectedFields extends keyof TFields = keyof TFields

Hierarchy

Constructors

  • Internal

    Constructs an instance of an Entity.

    Type Parameters

    • TFields extends object

    • TID extends {}

    • TViewerContext extends ViewerContext<TViewerContext>

    • TSelectedFields extends string | number | symbol = keyof TFields

    Parameters

    • constructorParam: {
          databaseFields: Readonly<TFields>;
          id: TID;
          selectedFields: Readonly<Pick<TFields, TSelectedFields>>;
          viewerContext: TViewerContext;
      }

      data needed to construct an instance of an entity viewerContext - the ViewerContext reading this entity id - the ID of this entity databaseFields - all underlying fields for this entity's data selectedFields - selected fields for this entity from TSelectedFields type

      This should only be overridden in cases where additional data validation is needed. The params should not be modified when calling super during constructions.

      • databaseFields: Readonly<TFields>
      • id: TID
      • selectedFields: Readonly<Pick<TFields, TSelectedFields>>
      • viewerContext: TViewerContext

    Returns ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>

Properties

databaseFields: Readonly<TFields>
id: TID
selectedFields: Readonly<Pick<TFields, TSelectedFields>>
viewerContext: TViewerContext

Methods

  • Get a underlying field from this entity's data

    Type Parameters

    • K extends string | number | symbol

    Parameters

    • fieldName: K

      the field to get

    Returns Pick<TFields, TSelectedFields>[K]

    the value of the field or undefined if not loaded with that field

  • Vend loader for loading an entity in a given query context.

    Type Parameters

    • TMFields extends object

    • TMID extends {}

    • TMViewerContext extends ViewerContext<TMViewerContext>

    • TMViewerContext2 extends ViewerContext<TMViewerContext2>

    • TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields, TMEntity>

    • TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMID, TMViewerContext, TMEntity, TMSelectedFields, TMPrivacyPolicy>

    • TMSelectedFields extends string | number | symbol = keyof TMFields

    Parameters

    • this: IEntityClass<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>
    • viewerContext: TMViewerContext2

      viewer context of loading user

    • queryContext: EntityQueryContext = ...

      query context in which to perform the load

    Returns EntityLoader<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>

Generated using TypeDoc