게시물 export 작업 기반 추가 v1.5.20

This commit is contained in:
2026-06-01 12:26:24 +09:00
parent abce690546
commit 11203ba251
13 changed files with 608 additions and 9 deletions

View File

@@ -0,0 +1,13 @@
import { requireAdminSession } from '../../../../utils/admin-auth'
import { listPostExportJobs } from '../../../../repositories/post-export-repository'
/**
* 관리자 게시물 Export 작업 목록 API
* @param {import('h3').H3Event} event - 요청 이벤트
* @returns {Promise<Array>} Export 작업 목록
*/
export default defineEventHandler((event) => {
requireAdminSession(event)
return listPostExportJobs()
})

View File

@@ -0,0 +1,27 @@
import { readBody } from 'h3'
import { z } from 'zod'
import { requireAdminSession } from '../../../../utils/admin-auth'
import { createPostExportJob } from '../../../../repositories/post-export-repository'
const postExportJobInputSchema = z.object({
chunkSize: z.number().int().min(1).max(500).optional(),
retentionDays: z.number().int().min(1).max(100).optional()
}).default({})
/**
* 관리자 게시물 Export 작업 요청 API
* @param {import('h3').H3Event} event - 요청 이벤트
* @returns {Promise<Object>} 생성된 Export 작업
*/
export default defineEventHandler(async (event) => {
const adminSession = requireAdminSession(event)
const input = postExportJobInputSchema.parse(await readBody(event))
return createPostExportJob({
requestedBy: adminSession.userId,
requestedEmail: adminSession.email,
scope: 'all',
chunkSize: input.chunkSize,
retentionDays: input.retentionDays
})
})