| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- module.exports = {
- checkPublish: {
- task: async ({ strapi }: { strapi: any }) => {
- try {
- // Safety check: verify the content type exists before proceeding
- if (!strapi.contentTypes['api::blog.blog']) {
- console.log('Blog content type not found. Skipping scheduled publish task.');
- return;
- }
- const now = new Date();
- console.log('[Cron] Checking for scheduled blog posts to publish at:', now.toISOString());
- try {
- const drafts = await strapi.documents('api::blog.blog').findMany({
- filters: {
- publish_at: { $lte: now },
- auto_publish: true
- },
- status: 'draft',
- });
- console.log(`[Cron] Found ${drafts?.length || 0} blog posts to publish`);
- for (const draft of drafts) {
- try {
- console.log('[Cron] Publishing entry:', draft.documentId);
-
- // Update the auto_publish flag first
- await strapi.documents('api::blog.blog').update({
- documentId: draft.documentId,
- data: { auto_publish: false },
- status: 'draft',
- });
-
- // Then publish the blog post
- await strapi.documents('api::blog.blog').publish({
- documentId: draft.documentId,
- });
-
- console.log('[Cron] Successfully published blog post:', draft.documentId);
- } catch (postError) {
- console.error(`[Cron] Error publishing blog post ${draft.documentId}:`, postError);
- // Continue with next post even if one fails
- }
- }
- } catch (queryError) {
- console.error('[Cron] Error querying drafts:', queryError);
- }
- } catch (error) {
- console.error('[Cron] Uncaught error in checkPublish task:', error);
- }
- },
- options: {
- rule: '*/10 * * * *', // Run every 10 minutes
- },
- },
- };
|