Kaizen
Browse modulesPersistenceClasses

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

Extended by

Type Parameters

Type ParameterDefault type
TClient-
TEntity-
TCreateInput-
TUpdateInput-
TIdstring
TTxTClient

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

ParameterType
prismaClientPrismaClientLike<TTx> & TClient
optionsRepositoryOptions

Returns

CrudRepository<TClient, TEntity, TCreateInput, TUpdateInput, TId, TTx>

Inherited from

WriteRepository.constructor

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

WriteRepository.ENTITY_TYPE


logger?

protected readonly optional logger?: Logger;

Defined in: server/persistence/base-repository.ts:64

Inherited from

WriteRepository.logger


prismaClient

protected prismaClient: PrismaClientLike<TTx> & TClient;

Defined in: server/persistence/base-repository.ts:69

Inherited from

WriteRepository.prismaClient

Accessors

actorId

Get Signature

get protected actorId(): string | null | undefined;

Defined in: server/persistence/base-repository.ts:76

Returns

string | null | undefined

Inherited from

WriteRepository.actorId


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

WriteRepository.auditCreate


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

WriteRepository.auditDelete


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

WriteRepository.auditUpdate


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 normally
Returns

this

Inherited from

WriteRepository.silent


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

WriteRepository.tx

Methods

_count()

abstract protected _count(): Promise<number>;

Defined in: server/persistence/base-repository.ts:169

Returns

Promise<number>

Inherited from

WriteRepository._count


_create()

abstract protected _create(input: TCreateInput): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:289

Parameters

ParameterType
inputTCreateInput

Returns

Promise<TEntity>

Inherited from

WriteRepository._create


_exists()

abstract protected _exists(id: TId): Promise<boolean>;

Defined in: server/persistence/base-repository.ts:168

Parameters

ParameterType
idTId

Returns

Promise<boolean>

Inherited from

WriteRepository._exists


_findById()

abstract protected _findById(id: TId): Promise<TEntity | null>;

Defined in: server/persistence/base-repository.ts:167

Parameters

ParameterType
idTId

Returns

Promise<TEntity | null>

Inherited from

WriteRepository._findById


_findMany()

abstract protected _findMany(pagination: {
  page: number;
  pageSize: number;
}): Promise<{
  items: TEntity[];
  total: number;
}>;

Defined in: server/persistence/base-repository.ts:170

Parameters

ParameterType
pagination{ page: number; pageSize: number; }
pagination.pagenumber
pagination.pageSizenumber

Returns

Promise<{ items: TEntity[]; total: number; }>

Inherited from

WriteRepository._findMany


_hardDelete()

abstract protected _hardDelete(id: TId): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:364

Parameters

ParameterType
idTId

Returns

Promise<TEntity>


_softDelete()

abstract protected _softDelete(id: TId): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:363

Parameters

ParameterType
idTId

Returns

Promise<TEntity>


_update()

abstract protected _update(id: TId, input: TUpdateInput): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:290

Parameters

ParameterType
idTId
inputTUpdateInput

Returns

Promise<TEntity>

Inherited from

WriteRepository._update


afterCreate()

protected afterCreate(entity: TEntity, _input: TCreateInput): Promise<void>;

Defined in: server/persistence/base-repository.ts:316

Parameters

ParameterType
entityTEntity
_inputTCreateInput

Returns

Promise<void>

Inherited from

WriteRepository.afterCreate


afterDelete()

protected afterDelete(_entity: TEntity, id: TId): Promise<void>;

Defined in: server/persistence/base-repository.ts:390

Parameters

ParameterType
_entityTEntity
idTId

Returns

Promise<void>


afterUpdate()

protected afterUpdate(
   _entity: TEntity, 
   id: TId, 
   input: TUpdateInput
): Promise<void>;

Defined in: server/persistence/base-repository.ts:328

Parameters

ParameterType
_entityTEntity
idTId
inputTUpdateInput

Returns

Promise<void>

Inherited from

WriteRepository.afterUpdate


beforeCreate()

protected beforeCreate(_input: TCreateInput): Promise<void>;

Defined in: server/persistence/base-repository.ts:315

Parameters

ParameterType
_inputTCreateInput

Returns

Promise<void>

Inherited from

WriteRepository.beforeCreate


beforeDelete()

protected beforeDelete(_id: TId, _existing: TEntity): Promise<void>;

Defined in: server/persistence/base-repository.ts:388

Parameters

ParameterType
_idTId
_existingTEntity

Returns

Promise<void>


beforeUpdate()

protected beforeUpdate(
   _id: TId, 
   _input: TUpdateInput, 
   _existing: TEntity
): Promise<void>;

Defined in: server/persistence/base-repository.ts:323

Parameters

ParameterType
_idTId
_inputTUpdateInput
_existingTEntity

Returns

Promise<void>

Inherited from

WriteRepository.beforeUpdate


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

WriteRepository.consumeSilent


count()

count(): Promise<number>;

Defined in: server/persistence/base-repository.ts:191

Returns

Promise<number>

Inherited from

WriteRepository.count


create()

create(input: TCreateInput): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:292

Parameters

ParameterType
inputTCreateInput

Returns

Promise<TEntity>

Inherited from

WriteRepository.create


exists()

exists(id: TId): Promise<boolean>;

Defined in: server/persistence/base-repository.ts:187

Parameters

ParameterType
idTId

Returns

Promise<boolean>

Inherited from

WriteRepository.exists


findById()

findById(id: TId): Promise<TEntity | null>;

Defined in: server/persistence/base-repository.ts:177

Parameters

ParameterType
idTId

Returns

Promise<TEntity | null>

Inherited from

WriteRepository.findById


findByIdOrThrow()

findByIdOrThrow(id: TId): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:181

Parameters

ParameterType
idTId

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

ParameterType
pagination{ page: number; pageSize: number; }
pagination.pagenumber
pagination.pageSizenumber

Returns

Promise<OffsetPaginatedResult<TEntity>>

Inherited from

WriteRepository.findMany


hardDelete()

hardDelete(id: TId): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:377

Parameters

ParameterType
idTId

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

ParameterType
_entityIdstring
_actionstring
_metadata?Record<string, unknown>

Returns

Promise<void>

Inherited from

WriteRepository.logActivity


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

ParameterType
idTId

Returns

Error

Inherited from

WriteRepository.notFoundError


softDelete()

softDelete(id: TId): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:366

Parameters

ParameterType
idTId

Returns

Promise<TEntity>


update()

update(id: TId, input: TUpdateInput): Promise<TEntity>;

Defined in: server/persistence/base-repository.ts:301

Parameters

ParameterType
idTId
inputTUpdateInput

Returns

Promise<TEntity>

Inherited from

WriteRepository.update

On this page