/**
 * Prisma 错误处理工具
 */

/**
 * 检查是否是无效的 UUID 格式错误
 * 
 * 当传入的 ID 不是有效的 UUID 格式时，Prisma 会抛出此错误
 */
export function isInvalidUuidError(error: any): boolean {
  return (
    error?.code === 'P2023' ||
    error?.message?.includes('Error creating UUID') ||
    error?.message?.includes('invalid character')
  );
}

/**
 * 安全执行 Prisma 查询
 * 
 * 如果查询失败且是 UUID 格式错误，返回 null 而不是抛出异常
 */
export async function safeFindUnique<T>(
  queryFn: () => Promise<T | null>,
): Promise<T | null> {
  try {
    return await queryFn();
  } catch (error) {
    if (isInvalidUuidError(error)) {
      return null;
    }
    throw error;
  }
}
