File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
'use server';
import { revalidatePath } from 'next/cache';
import { verifySession } from '@/lib/auth/dal';
import {
deletePointStandard,
updatePointStandard,
} from '@/lib/data/repositories/point-standard-repository';
import {
validatePointStandard,
type PointStandardFormState,
} from '@/lib/domain/point-standard-form';
import { POINT_STANDARDS_PATH } from '@/lib/domain/point-standard-query';
const SAVE_FAILED_MESSAGE = '저장하지 못했습니다. 잠시 후 다시 시도해 주세요.';
const DELETE_FAILED_MESSAGE = '삭제하지 못했습니다. 잠시 후 다시 시도해 주세요.';
function readString(formData: FormData, key: string): string {
const value = formData.get(key);
return typeof value === 'string' ? value : '';
}
function parseFormNumber(formData: FormData, key: string): number {
const trimmed = readString(formData, key).trim();
return trimmed === '' ? NaN : Number(trimmed);
}
/** 기획 PTS10100002_p — 이벤트는 읽기 전용이라 대상 id는 hidden 필드에서 읽는다. */
export async function updatePointStandardAction(
_prevState: PointStandardFormState,
formData: FormData
): Promise<PointStandardFormState> {
await verifySession();
const validation = validatePointStandard({
id: readString(formData, 'id'),
point: parseFormNumber(formData, 'point'),
limitPoint: parseFormNumber(formData, 'limitPoint'),
isDuplicable: readString(formData, 'isDuplicable') === 'Y',
description: readString(formData, 'description'),
isActive: readString(formData, 'isActive') === 'Y',
});
if (!validation.ok) {
return { status: 'error', errors: validation.errors };
}
try {
await updatePointStandard(validation.values);
} catch {
return { status: 'error', message: SAVE_FAILED_MESSAGE };
}
revalidatePath(POINT_STANDARDS_PATH);
return { status: 'success' };
}
export async function deletePointStandardAction(
id: string
): Promise<{ status: 'success' } | { status: 'error'; message: string }> {
await verifySession();
try {
await deletePointStandard(id);
} catch {
return { status: 'error', message: DELETE_FAILED_MESSAGE };
}
revalidatePath(POINT_STANDARDS_PATH);
return { status: 'success' };
}