From 7d05acdd2331b63e5ee9980d0794bf89156fc2f1 Mon Sep 17 00:00:00 2001 From: R2m1liA <15258427350@163.com> Date: Tue, 21 Oct 2025 07:21:24 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0meilisearch=20endpoin?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增添路由/meilisearch/collections用于获取所有可见集合 --- package-lock.json | 16 ++++++++-------- package.json | 7 ++++++- src/meilisearch_endpoint/index.ts | 27 +++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 src/meilisearch_endpoint/index.ts diff --git a/package-lock.json b/package-lock.json index 031710b..d6f3369 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@directus/extensions-sdk": "16.0.2", - "@types/node": "^24.8.1", + "@types/node": "^24.9.1", "typescript": "^5.9.3", "vue": "^3.5.22" } @@ -1917,13 +1917,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.8.1.tgz", - "integrity": "sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==", + "version": "24.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", + "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.14.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/nodemailer": { @@ -5405,9 +5405,9 @@ } }, "node_modules/undici-types": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", - "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 2d1a310..6224952 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,11 @@ "type": "hook", "name": "meilisearch_hook", "source": "src/meilisearch_hook/index.ts" + }, + { + "type": "endpoint", + "name": "meilisearch_endpoint", + "source": "src/meilisearch_endpoint/index.ts" } ], "host": "^10.10.0" @@ -43,7 +48,7 @@ "@directus/extensions-sdk": "16.0.2", "typescript": "^5.9.3", "vue": "^3.5.22", - "@types/node": "^24.8.1" + "@types/node": "^24.9.1" }, "dependencies": { "meilisearch": "^0.53.0" diff --git a/src/meilisearch_endpoint/index.ts b/src/meilisearch_endpoint/index.ts new file mode 100644 index 0000000..fda64bb --- /dev/null +++ b/src/meilisearch_endpoint/index.ts @@ -0,0 +1,27 @@ +import { defineEndpoint } from '@directus/extensions-sdk'; + +export default defineEndpoint({ + id: 'meilisearch', + handler: (router, context) => { + router.get('/', (_req, res) => res.send('Hello, World!')); + router.get('/collections', async (_req, res) => { + const { services, getSchema } = context; + const { CollectionsService } = services; + const schema = await getSchema(); + const collSvc = new CollectionsService({ + schema, + }) + const collections = await collSvc.readByQuery(); + + const visible = collections.filter(col => !col.meta?.hidden && !col.meta?.system && col.schema); + + const result = visible.map(col => ({ + collection: col.collection, + note: col.meta?.note || '', + icon: col.meta?.icon || '', + })); + + res.json(result); + }) + } +});