Selegic CRM Docs
ServerCRUD

Overview

The CRUD engine provides a standardized pipeline for database operations with hooks, validation, and observability.

The CRUD engine is a high-level orchestration layer over Prisma that provides a standardized way to perform database operations across all Prisma models. It ensures consistent handling of cross-cutting concerns like validation, hooks, and observability.

Core Philosophy

  • Standardization: Every CRUD operation follows the same execution pipeline
  • Extensibility: Hooks can intercept before and after operations
  • Type Safety: Full type inference from Prisma models to Hono RPC clients
  • Resilience: Built-in retry logic for transient database failures

Key Components

ComponentFilePurpose
CrudServicefeatures/crud/services/crud.service.tsMain entry point for executing operations
CrudRepositoryfeatures/crud/services/crud-repository.service.tsData access layer wrapping Prisma
CrudHookServicefeatures/crud/services/crud-hook.service.tsManages lifecycle hooks
createCrudRoutesfeatures/crud/crud.routes.tsHono route factory
OperationPipelinefeatures/shared/operation-pipeline.tsShared execution pipeline

File Structure

features/crud/
├── crud.routes.ts       # Route factory for Hono
├── factory.ts          # Hook registration utilities
├── hooks.ts             # Global hook registry
├── layers.ts            # Effect-TS layer composition
├── services/
│   ├── crud.service.ts         # Main service
│   ├── crud-repository.service.ts  # Prisma wrapper
│   ├── crud-hook.service.ts    # Hook executor
│   └── operation-handler.service.ts  # Operation handler
├── types/
│   └── index.ts         # Context tags and interfaces
└── schemas/
    ├── index.ts         # Schema exports
    └── *.crud.ts        # Per-model CRUD schemas

Operation Pipeline

The CRUD engine uses the shared Operation Pipeline which provides:

  1. Prepare Stage — Before hooks execute, validation
  2. Execute Stage — Database operation via CrudRepository
  3. After Stage — After hooks (success/failure)

Quick Navigation

Supported Operations

Each model exposes these standard operations:

  • findOne — Get single record by ID
  • findMany — Query multiple records with filters
  • createOne — Create new record
  • updateOne — Update existing record
  • deleteOne — Soft-delete record
  • aggregate — Aggregation queries
  • groupBy — Grouping queries

On this page