30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import type { H3Event } from 'h3'
|
||
import { createApiError } from './api-error'
|
||
|
||
export function handleTagApiError(event: H3Event, error: unknown): never {
|
||
if (error instanceof Error) {
|
||
if (error.message === 'INVALID_TAG_NAME') {
|
||
createApiError(event, 'INVALID_REQUEST', '标签名称无效(1–32 字)', 400)
|
||
}
|
||
if (error.message === 'INVALID_TAG_COLOR') {
|
||
createApiError(event, 'INVALID_REQUEST', '标签颜色格式无效', 400)
|
||
}
|
||
if (error.message === 'TAG_EXISTS') {
|
||
createApiError(event, 'CONFLICT', '标签已存在', 409)
|
||
}
|
||
if (error.message === 'TAG_LIMIT_REACHED') {
|
||
createApiError(event, 'INVALID_REQUEST', '标签数量已达上限', 400)
|
||
}
|
||
if (error.message === 'TAG_NOT_FOUND') {
|
||
createApiError(event, 'INVALID_REQUEST', '标签不存在', 404)
|
||
}
|
||
if (error.message === 'IMAGE_NOT_FOUND') {
|
||
createApiError(event, 'IMAGE_NOT_FOUND', '图片不存在', 404)
|
||
}
|
||
if (error.message === 'FORBIDDEN') {
|
||
createApiError(event, 'FORBIDDEN', '无权操作', 403)
|
||
}
|
||
}
|
||
throw error
|
||
}
|