diff --git a/CHANGELOG.md b/CHANGELOG.md index c3a5e41787..82da39f266 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Client - Enhance: Bull DashboardでRelationship Queueの状態も確認できるように (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/751) +- Feat: コントロールパネル内のファイル一覧でファイル名と説明で検索できるように(#14789) ### Server - diff --git a/packages/backend/src/server/api/endpoints/admin/drive/files.ts b/packages/backend/src/server/api/endpoints/admin/drive/files.ts index 915d777e77..0ffcdcd6ec 100644 --- a/packages/backend/src/server/api/endpoints/admin/drive/files.ts +++ b/packages/backend/src/server/api/endpoints/admin/drive/files.ts @@ -43,6 +43,8 @@ export const paramDef = { default: null, description: 'The local host is represented with `null`.', }, + name: { type: 'string', nullable: true }, + comment: { type: 'string', nullable: true }, }, required: [], } as const; @@ -81,6 +83,16 @@ export default class extends Endpoint { // eslint- } } + if (ps.name) { + // 前方一致検索(%と_は無害化) + query.andWhere('file.name ilike :name', { name: ps.name.replaceAll('%', '\\%').replaceAll('_', '\\_') + '%' }); + } + + if (ps.comment) { + // 前方一致検索(%と_は無害化) + query.andWhere('file.comment ilike :comment', { comment: ps.comment.replaceAll('%', '\\%').replaceAll('_', '\\_') + '%' }); + } + const files = await query.limit(ps.limit).getMany(); return await this.driveFileEntityService.packMany(files, { detail: true, withUser: true, self: true }); diff --git a/packages/frontend/src/pages/admin/files.vue b/packages/frontend/src/pages/admin/files.vue index 4cc859227f..2d36f9ef05 100644 --- a/packages/frontend/src/pages/admin/files.vue +++ b/packages/frontend/src/pages/admin/files.vue @@ -20,14 +20,25 @@ SPDX-License-Identifier: AGPL-3.0-only -
- - - - - - -
+ + +
+ + + + + + +
+
+ + + + + + +
+
@@ -41,6 +52,7 @@ import XHeader from './_header_.vue'; import MkInput from '@/components/MkInput.vue'; import MkSelect from '@/components/MkSelect.vue'; import MkFileListForAdmin from '@/components/MkFileListForAdmin.vue'; +import MkFolder from '@/components/MkFolder.vue'; import * as os from '@/os.js'; import { lookupFile } from '@/scripts/admin-lookup.js'; import { i18n } from '@/i18n.js'; @@ -51,6 +63,8 @@ const type = ref(null); const searchHost = ref(''); const userId = ref(''); const viewMode = ref('grid'); +const name = ref(''); +const comment = ref(''); const pagination = { endpoint: 'admin/drive/files' as const, limit: 10, @@ -59,6 +73,8 @@ const pagination = { userId: (userId.value && userId.value !== '') ? userId.value : null, origin: origin.value, hostname: (searchHost.value && searchHost.value !== '') ? searchHost.value : null, + name: (name.value && name.value !== '') ? name.value : null, + comment: (comment.value && comment.value !== '') ? comment.value : null, })), }; diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index 698c08826a..d4e4937d18 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -6812,6 +6812,8 @@ export type operations = { * @default null */ hostname?: string | null; + name?: string | null; + comment?: string | null; }; }; };