feat: 미사용 이미지 기준과 관리자 자산 정리 통합
This commit is contained in:
@@ -361,7 +361,7 @@ router.get('/custom-items', requireAdmin, async (req, res) => {
|
||||
page: z.coerce.number().int().min(1).optional().default(1),
|
||||
limit: z.coerce.number().int().min(1).max(200).optional().default(50),
|
||||
filter: z
|
||||
.enum(['library', 'all', 'user', 'template', 'asset', 'thumbnail', 'avatar', 'unused-user', 'replaced-user', 'unused-admin'])
|
||||
.enum(['library', 'all', 'user', 'template', 'asset', 'thumbnail', 'avatar', 'unused', 'unused-user', 'replaced-user', 'unused-admin'])
|
||||
.optional()
|
||||
.default('library'),
|
||||
})
|
||||
@@ -1140,11 +1140,27 @@ router.delete('/custom-items', requireAdmin, async (req, res) => {
|
||||
const parsed = schema.safeParse(req.query)
|
||||
if (!parsed.success) return res.status(400).json({ error: 'bad_request' })
|
||||
|
||||
const items = await findUnusedCustomItems({ queryText: parsed.data.q })
|
||||
const ids = items.map((item) => item.id)
|
||||
await deleteCustomItems(ids)
|
||||
await removeUnreferencedCustomItemFiles(items)
|
||||
res.json({ ok: true, deletedCount: ids.length })
|
||||
const result = await listCustomItems({
|
||||
queryText: parsed.data.q,
|
||||
page: 1,
|
||||
limit: 10000,
|
||||
filterMode: 'unused',
|
||||
})
|
||||
const customItems = result.items.filter((item) => item?.sourceType === 'user')
|
||||
const assetItems = result.items.filter((item) => item?.sourceType === 'asset' || item?.isAssetLibraryItem)
|
||||
const customItemIds = customItems.map((item) => item.id)
|
||||
const assetIds = assetItems
|
||||
.map((item) => String(item.id || ''))
|
||||
.filter((id) => id.startsWith('asset:'))
|
||||
.map((id) => id.slice('asset:'.length))
|
||||
|
||||
await deleteCustomItems(customItemIds)
|
||||
await removeUnreferencedCustomItemFiles(customItems)
|
||||
|
||||
const deletedAssets = await deleteImageAssets(assetIds)
|
||||
await removeImageAssetFiles(deletedAssets)
|
||||
|
||||
res.json({ ok: true, deletedCount: customItemIds.length + deletedAssets.length })
|
||||
})
|
||||
|
||||
router.get('/users', requireAdmin, async (req, res) => {
|
||||
|
||||
Reference in New Issue
Block a user