컴포넌트 화면편집기에 배치
This commit is contained in:
@@ -1,69 +0,0 @@
|
||||
import { Response } from "express";
|
||||
import { logger } from "./logger";
|
||||
|
||||
/**
|
||||
* 에러 처리 유틸리티
|
||||
*/
|
||||
export const handleError = (
|
||||
res: Response,
|
||||
error: any,
|
||||
message: string = "서버 오류가 발생했습니다."
|
||||
) => {
|
||||
logger.error(`Error: ${message}`, error);
|
||||
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
error: {
|
||||
code: "SERVER_ERROR",
|
||||
details: message,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 잘못된 요청 에러 처리
|
||||
*/
|
||||
export const handleBadRequest = (
|
||||
res: Response,
|
||||
message: string = "잘못된 요청입니다."
|
||||
) => {
|
||||
res.status(400).json({
|
||||
success: false,
|
||||
error: {
|
||||
code: "BAD_REQUEST",
|
||||
details: message,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 찾을 수 없음 에러 처리
|
||||
*/
|
||||
export const handleNotFound = (
|
||||
res: Response,
|
||||
message: string = "요청한 리소스를 찾을 수 없습니다."
|
||||
) => {
|
||||
res.status(404).json({
|
||||
success: false,
|
||||
error: {
|
||||
code: "NOT_FOUND",
|
||||
details: message,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 권한 없음 에러 처리
|
||||
*/
|
||||
export const handleUnauthorized = (
|
||||
res: Response,
|
||||
message: string = "권한이 없습니다."
|
||||
) => {
|
||||
res.status(403).json({
|
||||
success: false,
|
||||
error: {
|
||||
code: "UNAUTHORIZED",
|
||||
details: message,
|
||||
},
|
||||
});
|
||||
};
|
||||
@@ -1,101 +0,0 @@
|
||||
/**
|
||||
* 유효성 검증 유틸리티
|
||||
*/
|
||||
|
||||
/**
|
||||
* 필수 값 검증
|
||||
*/
|
||||
export const validateRequired = (value: any, fieldName: string): void => {
|
||||
if (value === null || value === undefined || value === "") {
|
||||
throw new Error(`${fieldName}은(는) 필수 입력값입니다.`);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 여러 필수 값 검증
|
||||
*/
|
||||
export const validateRequiredFields = (
|
||||
data: Record<string, any>,
|
||||
requiredFields: string[]
|
||||
): void => {
|
||||
for (const field of requiredFields) {
|
||||
validateRequired(data[field], field);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 문자열 길이 검증
|
||||
*/
|
||||
export const validateStringLength = (
|
||||
value: string,
|
||||
fieldName: string,
|
||||
minLength?: number,
|
||||
maxLength?: number
|
||||
): void => {
|
||||
if (minLength !== undefined && value.length < minLength) {
|
||||
throw new Error(
|
||||
`${fieldName}은(는) 최소 ${minLength}자 이상이어야 합니다.`
|
||||
);
|
||||
}
|
||||
|
||||
if (maxLength !== undefined && value.length > maxLength) {
|
||||
throw new Error(`${fieldName}은(는) 최대 ${maxLength}자 이하여야 합니다.`);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 이메일 형식 검증
|
||||
*/
|
||||
export const validateEmail = (email: string): boolean => {
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
return emailRegex.test(email);
|
||||
};
|
||||
|
||||
/**
|
||||
* 숫자 범위 검증
|
||||
*/
|
||||
export const validateNumberRange = (
|
||||
value: number,
|
||||
fieldName: string,
|
||||
min?: number,
|
||||
max?: number
|
||||
): void => {
|
||||
if (min !== undefined && value < min) {
|
||||
throw new Error(`${fieldName}은(는) ${min} 이상이어야 합니다.`);
|
||||
}
|
||||
|
||||
if (max !== undefined && value > max) {
|
||||
throw new Error(`${fieldName}은(는) ${max} 이하여야 합니다.`);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 배열이 비어있지 않은지 검증
|
||||
*/
|
||||
export const validateNonEmptyArray = (
|
||||
array: any[],
|
||||
fieldName: string
|
||||
): void => {
|
||||
if (!Array.isArray(array) || array.length === 0) {
|
||||
throw new Error(`${fieldName}은(는) 비어있을 수 없습니다.`);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 필수 필드 검증 후 누락된 필드 목록 반환
|
||||
*/
|
||||
export const checkMissingFields = (
|
||||
data: Record<string, any>,
|
||||
requiredFields: string[]
|
||||
): string[] => {
|
||||
const missingFields: string[] = [];
|
||||
|
||||
for (const field of requiredFields) {
|
||||
const value = data[field];
|
||||
if (value === null || value === undefined || value === "") {
|
||||
missingFields.push(field);
|
||||
}
|
||||
}
|
||||
|
||||
return missingFields;
|
||||
};
|
||||
Reference in New Issue
Block a user