Example

filter

  • Purpose: Enables filtering of the entity list based on specific fields.

  • queryParams: FilterDTO Defines the shape and metadata of acceptable filter parameters.

  • mapper: (params: FilterDTO) => object A function that transforms the input filter parameters into Prisma-compatible filter objects.

order

  • Purpose: Enables sorting of the entity list.

  • queryParams: OrderDTO Metadata for expected ordering fields.

  • mapper: (params: OrderDTO) => object Converts query parameters into Prisma orderBy format.

select: selectUserValidator(),
  • This defines which fields should be returned from the database.

  • The function selectUserValidator() likely returns an object that specifies allowed fields,

Follow this example to know more about how to use it :

export const UserEntityOperations: CrudGeneratorConfig<'user'> = {
  dto: UserDTO, //The Data Transfer Object (DTO) used to defines the shape of the data that should be sent/received from the client.
  path: 'user', // here where you add your own path
  operations: [
    { type: 'GET' }, // get user by id 
    {
      type: 'LIST',
      queryParam: UserFilterDTO,
    filter: {
  queryParams: UserFilterDTO, // Metadata type for query parameters
  mapper: (params: UserFilterDTO) => ({
    ...(params.name && {
      name: { contains: params.name, mode: 'insensitive' },
    }),
  }),
},
order: {
  queryParams: UserOrderDTO, // Metadata type for ordering parameters
  mapper: (params: UserOrderDTO) => ({
    ...(params.orderBy && {
      [params.orderBy]: params.direction ?? 'asc',
    }),
  }),
},
    { type: 'CREATE', body: CreateUserDTO },
    { type: 'UPDATE', body: UpdateUserDTO },
    { type: 'DELETE_BY_ID' },
    { type: 'METADATA' },
     {
      type: 'EXPORT',
      decorators: [() => SetPermission<Permission>('user:write')],
      select: { name: true, age: true, salary: true },
    },
  ],
  prismaConfig: {
    entityName: 'user',
    select: selectUserValidator(),
  },
} as const;

Last updated