|
|
@@ -1,28 +1,58 @@
|
|
|
module.exports = {
|
|
|
checkPublish: {
|
|
|
- task: async ({ strapi }) => {
|
|
|
- const now = new Date();
|
|
|
- const drafts = await strapi.documents('api::blog.blog').findMany({
|
|
|
- filters: {
|
|
|
- publish_at: { $lte: now },
|
|
|
- isNewVersion: true
|
|
|
- },
|
|
|
- status: 'draft',
|
|
|
- });
|
|
|
- for (const draft of drafts) {
|
|
|
- console.log('Publishing entry:', draft.documentId);
|
|
|
- await strapi.documents('api::blog.blog').update({
|
|
|
- documentId: draft.documentId,
|
|
|
- data: { isNewVersion: false },
|
|
|
- status: 'draft',
|
|
|
- });
|
|
|
- await strapi.documents('api::blog.blog').publish({
|
|
|
- documentId: draft.documentId,
|
|
|
- });
|
|
|
+ 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: '* * * * *',
|
|
|
+ rule: '*/10 * * * *', // Run every 10 minutes
|
|
|
},
|
|
|
},
|
|
|
};
|