This repository has no description
Something went wrong. Try again.
1.6 kB · 42 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243// SPDX-License-Identifier: AGPL-3.0-or-later
import {AdminACLs} from '@fluxer/constants/src/AdminACLs';import {PurgeGuildAssetsRequest, PurgeGuildAssetsResponseSchema} from '@fluxer/schema/src/domains/admin/AdminSchemas';import {requireAdminACL} from '../../middleware/AdminMiddleware';import {RateLimitMiddleware} from '../../middleware/RateLimitMiddleware';import {OpenAPI} from '../../middleware/ResponseTypeMiddleware';import {AdminRateLimitConfigs} from '../../rate_limit_configs/AdminRateLimitConfig';import type {HonoApp} from '../../types/HonoEnv';import {Validator} from '../../Validator';
export function AssetAdminController(app: HonoApp) { app.post( '/admin/assets/purge', RateLimitMiddleware(AdminRateLimitConfigs.ADMIN_GUILD_MODIFY), requireAdminACL(AdminACLs.ASSET_PURGE), Validator('json', PurgeGuildAssetsRequest), OpenAPI({ operationId: 'purge_guild_assets', summary: 'Purge guild assets', responseSchema: PurgeGuildAssetsResponseSchema, statusCode: 200, security: ['adminApiKey'], tags: ['Admin'], description: 'Delete and clean up all assets belonging to a guild, including icons, banners, and other media. This is a destructive operation used for cleanup during guild management or compliance actions.', }), async (ctx) => { const adminService = ctx.get('adminService'); const adminUserId = ctx.get('adminUserId'); const auditLogReason = ctx.get('auditLogReason'); const data = ctx.req.valid('json'); return ctx.json( await adminService.assetPurgeService.purgeGuildAssets({ ids: data.ids, adminUserId, auditLogReason, }), ); }, );}