42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import type { ZodIssue } from "zod"
|
|
|
|
export class CrudError extends Error {
|
|
public readonly code: string
|
|
|
|
constructor(message: string, code: string) {
|
|
super(message)
|
|
this.name = "CrudError"
|
|
this.code = code
|
|
}
|
|
}
|
|
|
|
export class CrudValidationError extends CrudError {
|
|
public readonly resource: string
|
|
public readonly operation: "create" | "update"
|
|
public readonly issues: ZodIssue[]
|
|
|
|
constructor(params: {
|
|
resource: string
|
|
operation: "create" | "update"
|
|
issues: ZodIssue[]
|
|
}) {
|
|
super(`Validation failed for ${params.resource} ${params.operation}`, "CRUD_VALIDATION")
|
|
this.name = "CrudValidationError"
|
|
this.resource = params.resource
|
|
this.operation = params.operation
|
|
this.issues = params.issues
|
|
}
|
|
}
|
|
|
|
export class CrudNotFoundError extends CrudError {
|
|
public readonly resource: string
|
|
public readonly id: string
|
|
|
|
constructor(params: { resource: string; id: string }) {
|
|
super(`${params.resource} ${params.id} was not found`, "CRUD_NOT_FOUND")
|
|
this.name = "CrudNotFoundError"
|
|
this.resource = params.resource
|
|
this.id = params.id
|
|
}
|
|
}
|