From e443ece848d871e0d1efcf587a9411e572b71d4e Mon Sep 17 00:00:00 2001 From: echo Date: Fri, 27 Feb 2026 20:32:22 +0100 Subject: [PATCH] fix: remove article API files to allow Strapi UI to recreate them --- .../article/lifecycles.ts.disabled | 64 ---------------- .../article/content-types/article/schema.json | 74 ------------------- .../src/api/article/controllers/article.ts | 7 -- cms/cms/src/api/article/routes/article.ts | 7 -- cms/cms/src/api/article/services/article.ts | 7 -- 5 files changed, 159 deletions(-) delete mode 100644 cms/cms/src/api/article/content-types/article/lifecycles.ts.disabled delete mode 100644 cms/cms/src/api/article/content-types/article/schema.json delete mode 100644 cms/cms/src/api/article/controllers/article.ts delete mode 100644 cms/cms/src/api/article/routes/article.ts delete mode 100644 cms/cms/src/api/article/services/article.ts diff --git a/cms/cms/src/api/article/content-types/article/lifecycles.ts.disabled b/cms/cms/src/api/article/content-types/article/lifecycles.ts.disabled deleted file mode 100644 index 519ac8c..0000000 --- a/cms/cms/src/api/article/content-types/article/lifecycles.ts.disabled +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Lifecycle hooks for Article content type - * Automatically notifies the backend when articles are published/updated/deleted - */ - -export default { - async afterCreate(event) { - const { result } = event; - - // Only notify if article is published - if (result.publishedAt) { - await notifyBackend('entry.publish', result); - } - }, - - async afterUpdate(event) { - const { result } = event; - - if (result.publishedAt) { - await notifyBackend('entry.update', result); - } else { - await notifyBackend('entry.unpublish', result); - } - }, - - async afterDelete(event) { - const { result } = event; - await notifyBackend('entry.delete', result); - }, -}; - -/** - * Notify backend via webhook - */ -async function notifyBackend(event: string, entry: any) { - const backendUrl = process.env.BACKEND_WEBHOOK_URL || 'http://backend:3000'; - const webhookUrl = `${backendUrl}/api/v1/webhooks/strapi/article`; - - const payload = { - event, - model: 'article', - entry: { - documentId: entry.documentId, - }, - }; - - try { - const response = await fetch(webhookUrl, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(payload), - }); - - if (!response.ok) { - console.error(`Webhook failed: ${response.status} ${response.statusText}`); - } else { - console.log(`✅ Webhook sent successfully: ${event} for article ${entry.documentId}`); - } - } catch (error) { - console.error(`Failed to notify backend: ${error.message}`); - } -} diff --git a/cms/cms/src/api/article/content-types/article/schema.json b/cms/cms/src/api/article/content-types/article/schema.json deleted file mode 100644 index 1bd0816..0000000 --- a/cms/cms/src/api/article/content-types/article/schema.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "kind": "collectionType", - "collectionName": "articles", - "info": { - "singularName": "article", - "pluralName": "articles", - "displayName": "article" - }, - "options": { - "draftAndPublish": true - }, - "pluginOptions": {}, - "attributes": { - "title": { - "type": "string" - }, - "content": { - "type": "richtext" - }, - "media": { - "type": "media", - "multiple": true, - "allowedTypes": [ - "images", - "files", - "videos", - "audios" - ] - }, - "author": { - "type": "string" - }, - "img": { - "type": "media", - "multiple": false, - "allowedTypes": [ - "images", - "files", - "videos", - "audios" - ] - }, - "imagePosition": { - "type": "enumeration", - "enum": ["top", "left", "right", "none"], - "default": "top" - }, - "imageSize": { - "type": "enumeration", - "enum": ["small", "medium", "large"], - "default": "medium" - }, - "videoUrl": { - "type": "string", - "regex": "^(https?:\\/\\/)?(www\\.)?(youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)[a-zA-Z0-9_-]{11}", - "default": "" - }, - "videoPosition": { - "type": "enumeration", - "enum": ["top", "inline", "bottom", "none"], - "default": "inline" - }, - "videoCaption": { - "type": "string", - "default": "" - }, - "category": { - "type": "enumeration", - "enum": ["sport", "art", "science"], - "default": "sport", - "required": true - } - } -} diff --git a/cms/cms/src/api/article/controllers/article.ts b/cms/cms/src/api/article/controllers/article.ts deleted file mode 100644 index 156f898..0000000 --- a/cms/cms/src/api/article/controllers/article.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * article controller - */ - -import { factories } from '@strapi/strapi'; - -export default factories.createCoreController('api::article.article'); diff --git a/cms/cms/src/api/article/routes/article.ts b/cms/cms/src/api/article/routes/article.ts deleted file mode 100644 index 5c36ce3..0000000 --- a/cms/cms/src/api/article/routes/article.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * article router - */ - -import { factories } from '@strapi/strapi'; - -export default factories.createCoreRouter('api::article.article'); diff --git a/cms/cms/src/api/article/services/article.ts b/cms/cms/src/api/article/services/article.ts deleted file mode 100644 index 29e9d27..0000000 --- a/cms/cms/src/api/article/services/article.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * article service - */ - -import { factories } from '@strapi/strapi'; - -export default factories.createCoreService('api::article.article');