Interface EntityCompanionDefinition<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>

Definition for constructing a companion for an entity. Defines the core set of objects used to power the entity framework for a particular type of entity.

interface EntityCompanionDefinition<
    TFields extends object,
    TID extends NonNullable<TFields[TSelectedFields]>,
    TViewerContext extends ViewerContext,
    TEntity extends
        ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
    TPrivacyPolicy extends
        EntityPrivacyPolicy<
            TFields,
            TID,
            TViewerContext,
            TEntity,
            TSelectedFields,
        >,
    TSelectedFields extends keyof TFields = keyof TFields,
> {
    entityClass: IEntityClass<
        TFields,
        TID,
        TViewerContext,
        TEntity,
        TPrivacyPolicy,
        TSelectedFields,
    >;
    entityConfiguration: EntityConfiguration<TFields>;
    entitySelectedFields?: TSelectedFields[];
    mutationTriggers?: EntityMutationTriggerConfiguration<
        TFields,
        TID,
        TViewerContext,
        TEntity,
        TSelectedFields,
    >;
    mutationValidators?: EntityMutationValidator<
        TFields,
        TID,
        TViewerContext,
        TEntity,
        TSelectedFields,
    >[];
    privacyPolicyClass: IPrivacyPolicyClass<TPrivacyPolicy>;
}

Type Parameters

Properties

entityClass: IEntityClass<
    TFields,
    TID,
    TViewerContext,
    TEntity,
    TPrivacyPolicy,
    TSelectedFields,
>

The concrete Entity class for which this is the definition.

entityConfiguration: EntityConfiguration<TFields>

The EntityConfiguration for this entity.

entitySelectedFields?: TSelectedFields[]

An optional subset of fields defined in the EntityConfiguration which belong to this entity. For use when multiple types of entities are backed by a single table (EntityConfiguration) yet only expose a subset of the fields.

mutationTriggers?: EntityMutationTriggerConfiguration<
    TFields,
    TID,
    TViewerContext,
    TEntity,
    TSelectedFields,
>

An optional list of EntityMutationTrigger for this entity.

mutationValidators?: EntityMutationValidator<
    TFields,
    TID,
    TViewerContext,
    TEntity,
    TSelectedFields,
>[]

An optional list of EntityMutationValidator for this entity.

privacyPolicyClass: IPrivacyPolicyClass<TPrivacyPolicy>

The EntityPrivacyPolicy class for this entity.