fix: remove article API files to allow Strapi UI to recreate them

This commit is contained in:
echo 2026-02-27 20:32:22 +01:00
parent 76963f6eea
commit e443ece848
5 changed files with 0 additions and 159 deletions

View File

@ -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}`);
}
}

View File

@ -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
}
}
}

View File

@ -1,7 +0,0 @@
/**
* article controller
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreController('api::article.article');

View File

@ -1,7 +0,0 @@
/**
* article router
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreRouter('api::article.article');

View File

@ -1,7 +0,0 @@
/**
* article service
*/
import { factories } from '@strapi/strapi';
export default factories.createCoreService('api::article.article');