Abstract Class: CrudRepository<TClient, TEntity, TCreateInput, TUpdateInput, TId = `string`, TTx = `TClient`>
Defined in: server/persistence/base-repository.ts:348
Repository with full CRUD capabilities. Extend this for most repositories that need create, read, update, and delete.
Extends
WriteRepository<TClient,TEntity,TCreateInput,TUpdateInput,TId,TTx>
Extended by
BookingCrudRepositoryBookingGroupRepositoryBookingTypeRepositoryWaitlistOfferRepositoryPeripheralDeviceRepositoryCapacityAttendanceSettingsRepositoryConditionCrudRepositoryRuleCrudRepositoryGrantRepositoryGroupMembershipRepositoryPermissionRepositoryRoleRepositoryFormSchemaRepositoryFormStepRepositoryFormStepTransitionRepositoryFormSubmissionFileRepositoryFormSubmissionRepository
Type Parameters
| Type Parameter | Default type |
|---|---|
TClient | - |
TEntity | - |
TCreateInput | - |
TUpdateInput | - |
TId | string |
TTx | TClient |
Constructors
Constructor
new CrudRepository<TClient, TEntity, TCreateInput, TUpdateInput, TId = string, TTx = TClient>(prismaClient: PrismaClientLike<TTx> & TClient, options?: RepositoryOptions): CrudRepository<TClient, TEntity, TCreateInput, TUpdateInput, TId, TTx>;Defined in: server/persistence/base-repository.ts:68
Parameters
| Parameter | Type |
|---|---|
prismaClient | PrismaClientLike<TTx> & TClient |
options | RepositoryOptions |
Returns
CrudRepository<TClient, TEntity, TCreateInput, TUpdateInput, TId, TTx>
Inherited from
Properties
ENTITY_TYPE?
protected readonly optional ENTITY_TYPE?: string;Defined in: server/persistence/base-repository.ts:61
Set ENTITY_TYPE in child repositories to enable automatic activity
logging. When set, create/update/delete operations auto-log unless
silenced with .silent. Requires an activity model on the consumer's
Prisma schema.
Inherited from
logger?
protected readonly optional logger?: Logger;Defined in: server/persistence/base-repository.ts:64
Inherited from
prismaClient
protected prismaClient: PrismaClientLike<TTx> & TClient;Defined in: server/persistence/base-repository.ts:69
Inherited from
Accessors
actorId
Get Signature
get protected actorId(): string | null | undefined;Defined in: server/persistence/base-repository.ts:76
Returns
string | null | undefined
Inherited from
auditCreate
Get Signature
get protected auditCreate(): {
createdBy: string | null | undefined;
updatedBy: string | null | undefined;
};Defined in: server/persistence/base-repository.ts:90
Returns
{
createdBy: string | null | undefined;
updatedBy: string | null | undefined;
}createdBy
createdBy: string | null | undefined = actorId;updatedBy
updatedBy: string | null | undefined = actorId;Inherited from
auditDelete
Get Signature
get protected auditDelete(): {
deletedAt: Date;
deletedBy: string | null | undefined;
};Defined in: server/persistence/base-repository.ts:99
Returns
{
deletedAt: Date;
deletedBy: string | null | undefined;
}deletedAt
deletedAt: Date;deletedBy
deletedBy: string | null | undefined;Inherited from
auditUpdate
Get Signature
get protected auditUpdate(): {
updatedBy: string | null | undefined;
};Defined in: server/persistence/base-repository.ts:95
Returns
{
updatedBy: string | null | undefined;
}updatedBy
updatedBy: string | null | undefined;Inherited from
silent
Get Signature
get silent(): this;Defined in: server/persistence/base-repository.ts:115
Suppress activity logging for the next mutation call. One-shot: the flag is consumed by the next create/update/delete.
Example
await repo.silent.update(id, data); // no activity logged
await repo.update(id, data); // activity logged normallyReturns
this
Inherited from
tx
Get Signature
get protected tx(): TTx;Defined in: server/persistence/base-repository.ts:86
The current Prisma handle: the active transaction if one is running on this async context, otherwise the raw client.
Returns
TTx
Inherited from
Methods
_count()
abstract protected _count(): Promise<number>;Defined in: server/persistence/base-repository.ts:169
Returns
Promise<number>
Inherited from
_create()
abstract protected _create(input: TCreateInput): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:289
Parameters
| Parameter | Type |
|---|---|
input | TCreateInput |
Returns
Promise<TEntity>
Inherited from
_exists()
abstract protected _exists(id: TId): Promise<boolean>;Defined in: server/persistence/base-repository.ts:168
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<boolean>
Inherited from
_findById()
abstract protected _findById(id: TId): Promise<TEntity | null>;Defined in: server/persistence/base-repository.ts:167
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<TEntity | null>
Inherited from
_findMany()
abstract protected _findMany(pagination: {
page: number;
pageSize: number;
}): Promise<{
items: TEntity[];
total: number;
}>;Defined in: server/persistence/base-repository.ts:170
Parameters
| Parameter | Type |
|---|---|
pagination | { page: number; pageSize: number; } |
pagination.page | number |
pagination.pageSize | number |
Returns
Promise<{
items: TEntity[];
total: number;
}>
Inherited from
_hardDelete()
abstract protected _hardDelete(id: TId): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:364
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<TEntity>
_softDelete()
abstract protected _softDelete(id: TId): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:363
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<TEntity>
_update()
abstract protected _update(id: TId, input: TUpdateInput): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:290
Parameters
| Parameter | Type |
|---|---|
id | TId |
input | TUpdateInput |
Returns
Promise<TEntity>
Inherited from
afterCreate()
protected afterCreate(entity: TEntity, _input: TCreateInput): Promise<void>;Defined in: server/persistence/base-repository.ts:316
Parameters
| Parameter | Type |
|---|---|
entity | TEntity |
_input | TCreateInput |
Returns
Promise<void>
Inherited from
afterDelete()
protected afterDelete(_entity: TEntity, id: TId): Promise<void>;Defined in: server/persistence/base-repository.ts:390
Parameters
| Parameter | Type |
|---|---|
_entity | TEntity |
id | TId |
Returns
Promise<void>
afterUpdate()
protected afterUpdate(
_entity: TEntity,
id: TId,
input: TUpdateInput
): Promise<void>;Defined in: server/persistence/base-repository.ts:328
Parameters
| Parameter | Type |
|---|---|
_entity | TEntity |
id | TId |
input | TUpdateInput |
Returns
Promise<void>
Inherited from
beforeCreate()
protected beforeCreate(_input: TCreateInput): Promise<void>;Defined in: server/persistence/base-repository.ts:315
Parameters
| Parameter | Type |
|---|---|
_input | TCreateInput |
Returns
Promise<void>
Inherited from
beforeDelete()
protected beforeDelete(_id: TId, _existing: TEntity): Promise<void>;Defined in: server/persistence/base-repository.ts:388
Parameters
| Parameter | Type |
|---|---|
_id | TId |
_existing | TEntity |
Returns
Promise<void>
beforeUpdate()
protected beforeUpdate(
_id: TId,
_input: TUpdateInput,
_existing: TEntity
): Promise<void>;Defined in: server/persistence/base-repository.ts:323
Parameters
| Parameter | Type |
|---|---|
_id | TId |
_input | TUpdateInput |
_existing | TEntity |
Returns
Promise<void>
Inherited from
consumeSilent()
protected consumeSilent(): boolean;Defined in: server/persistence/base-repository.ts:128
Consume and reset the silent flag. Called by template methods.
Returns
boolean
Inherited from
count()
count(): Promise<number>;Defined in: server/persistence/base-repository.ts:191
Returns
Promise<number>
Inherited from
create()
create(input: TCreateInput): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:292
Parameters
| Parameter | Type |
|---|---|
input | TCreateInput |
Returns
Promise<TEntity>
Inherited from
exists()
exists(id: TId): Promise<boolean>;Defined in: server/persistence/base-repository.ts:187
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<boolean>
Inherited from
findById()
findById(id: TId): Promise<TEntity | null>;Defined in: server/persistence/base-repository.ts:177
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<TEntity | null>
Inherited from
findByIdOrThrow()
findByIdOrThrow(id: TId): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:181
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<TEntity>
Inherited from
WriteRepository.findByIdOrThrow
findMany()
findMany(pagination: {
page: number;
pageSize: number;
}): Promise<OffsetPaginatedResult<TEntity>>;Defined in: server/persistence/base-repository.ts:195
Parameters
| Parameter | Type |
|---|---|
pagination | { page: number; pageSize: number; } |
pagination.page | number |
pagination.pageSize | number |
Returns
Promise<OffsetPaginatedResult<TEntity>>
Inherited from
hardDelete()
hardDelete(id: TId): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:377
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<TEntity>
logActivity()
protected logActivity(
_entityId: string,
_action: string,
_metadata?: Record<string, unknown>
): Promise<void>;Defined in: server/persistence/base-repository.ts:140
Log an activity entry.
NOTE: This is not implemented because there's no activity model implemented in taproot yet! https://linear.app/kaizenlabs/issue/ENG-7846/add-activity-log-tables
Parameters
| Parameter | Type |
|---|---|
_entityId | string |
_action | string |
_metadata? | Record<string, unknown> |
Returns
Promise<void>
Inherited from
notFoundError()
abstract protected notFoundError(id: TId): Error;Defined in: server/persistence/base-repository.ts:175
Create a not-found error. Override to provide custom error types.
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Error
Inherited from
softDelete()
softDelete(id: TId): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:366
Parameters
| Parameter | Type |
|---|---|
id | TId |
Returns
Promise<TEntity>
update()
update(id: TId, input: TUpdateInput): Promise<TEntity>;Defined in: server/persistence/base-repository.ts:301
Parameters
| Parameter | Type |
|---|---|
id | TId |
input | TUpdateInput |
Returns
Promise<TEntity>