export class DomainError extends Error {
  constructor(
    message: string,
    public readonly code: string,
    public readonly status = 422,
    public readonly details?: unknown
  ) {
    super(message);
    this.name = 'DomainError';
  }
}

export class ForbiddenError extends DomainError {
  constructor(message = 'شما مجوز انجام این عملیات را ندارید.') {
    super(message, 'FORBIDDEN', 403);
  }
}

export class NotFoundError extends DomainError {
  constructor(message = 'رکورد درخواستی یافت نشد.') {
    super(message, 'NOT_FOUND', 404);
  }
}

export class ConflictError extends DomainError {
  constructor(message: string, code = 'CONFLICT') {
    super(message, code, 409);
  }
}

