convex-cms 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/admin.d.ts +16 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +88 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +18 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/detectConvexUrl.d.ts +13 -0
- package/dist/cli/utils/detectConvexUrl.d.ts.map +1 -0
- package/dist/cli/utils/detectConvexUrl.js +48 -0
- package/dist/cli/utils/detectConvexUrl.js.map +1 -0
- package/dist/cli/utils/openBrowser.d.ts +7 -0
- package/dist/cli/utils/openBrowser.d.ts.map +1 -0
- package/dist/cli/utils/openBrowser.js +17 -0
- package/dist/cli/utils/openBrowser.js.map +1 -0
- package/dist/client/admin-config.d.ts +126 -0
- package/dist/client/admin-config.d.ts.map +1 -0
- package/dist/client/admin-config.js +117 -0
- package/dist/client/admin-config.js.map +1 -0
- package/dist/client/adminApi.d.ts +2273 -0
- package/dist/client/adminApi.d.ts.map +1 -0
- package/dist/client/adminApi.js +716 -0
- package/dist/client/adminApi.js.map +1 -0
- package/dist/client/agentTools.d.ts +933 -0
- package/dist/client/agentTools.d.ts.map +1 -0
- package/dist/client/agentTools.js +1004 -0
- package/dist/client/agentTools.js.map +1 -0
- package/dist/client/argTypes.d.ts +212 -0
- package/dist/client/argTypes.d.ts.map +1 -0
- package/dist/client/argTypes.js +5 -0
- package/dist/client/argTypes.js.map +1 -0
- package/dist/client/field-types.d.ts +55 -0
- package/dist/client/field-types.d.ts.map +1 -0
- package/dist/client/field-types.js +152 -0
- package/dist/client/field-types.js.map +1 -0
- package/dist/client/index.d.ts +189 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +668 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/queryBuilder.d.ts +765 -0
- package/dist/client/queryBuilder.d.ts.map +1 -0
- package/dist/client/queryBuilder.js +970 -0
- package/dist/client/queryBuilder.js.map +1 -0
- package/dist/client/schema/codegen.d.ts +128 -0
- package/dist/client/schema/codegen.d.ts.map +1 -0
- package/dist/client/schema/codegen.js +318 -0
- package/dist/client/schema/codegen.js.map +1 -0
- package/dist/client/schema/defineContentType.d.ts +221 -0
- package/dist/client/schema/defineContentType.d.ts.map +1 -0
- package/dist/client/schema/defineContentType.js +380 -0
- package/dist/client/schema/defineContentType.js.map +1 -0
- package/dist/client/schema/index.d.ts +85 -0
- package/dist/client/schema/index.d.ts.map +1 -0
- package/dist/client/schema/index.js +92 -0
- package/dist/client/schema/index.js.map +1 -0
- package/dist/client/schema/schemaDrift.d.ts +199 -0
- package/dist/client/schema/schemaDrift.d.ts.map +1 -0
- package/dist/client/schema/schemaDrift.js +340 -0
- package/dist/client/schema/schemaDrift.js.map +1 -0
- package/dist/client/schema/typedClient.d.ts +401 -0
- package/dist/client/schema/typedClient.d.ts.map +1 -0
- package/dist/client/schema/typedClient.js +269 -0
- package/dist/client/schema/typedClient.js.map +1 -0
- package/dist/client/schema/types.d.ts +477 -0
- package/dist/client/schema/types.d.ts.map +1 -0
- package/dist/client/schema/types.js +39 -0
- package/dist/client/schema/types.js.map +1 -0
- package/dist/client/types.d.ts +449 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +149 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/workflows.d.ts +51 -0
- package/dist/client/workflows.d.ts.map +1 -0
- package/dist/client/workflows.js +103 -0
- package/dist/client/workflows.js.map +1 -0
- package/dist/client/wrapper.d.ts +2198 -0
- package/dist/client/wrapper.d.ts.map +1 -0
- package/dist/client/wrapper.js +2651 -0
- package/dist/client/wrapper.js.map +1 -0
- package/dist/component/_generated/api.d.ts +124 -0
- package/dist/component/_generated/api.d.ts.map +1 -0
- package/dist/component/_generated/api.js +31 -0
- package/dist/component/_generated/api.js.map +1 -0
- package/dist/component/_generated/component.d.ts +4321 -0
- package/dist/component/_generated/component.d.ts.map +1 -0
- package/dist/component/_generated/component.js +11 -0
- package/dist/component/_generated/component.js.map +1 -0
- package/dist/component/_generated/dataModel.d.ts +46 -0
- package/dist/component/_generated/dataModel.d.ts.map +1 -0
- package/dist/component/_generated/dataModel.js +11 -0
- package/dist/component/_generated/dataModel.js.map +1 -0
- package/dist/component/_generated/server.d.ts +121 -0
- package/dist/component/_generated/server.d.ts.map +1 -0
- package/dist/component/_generated/server.js +78 -0
- package/dist/component/_generated/server.js.map +1 -0
- package/dist/component/auditLog.d.ts +410 -0
- package/dist/component/auditLog.d.ts.map +1 -0
- package/dist/component/auditLog.js +607 -0
- package/dist/component/auditLog.js.map +1 -0
- package/dist/component/authorization.d.ts +323 -0
- package/dist/component/authorization.d.ts.map +1 -0
- package/dist/component/authorization.js +464 -0
- package/dist/component/authorization.js.map +1 -0
- package/dist/component/authorizationHooks.d.ts +184 -0
- package/dist/component/authorizationHooks.d.ts.map +1 -0
- package/dist/component/authorizationHooks.js +521 -0
- package/dist/component/authorizationHooks.js.map +1 -0
- package/dist/component/bulkOperations.d.ts +200 -0
- package/dist/component/bulkOperations.d.ts.map +1 -0
- package/dist/component/bulkOperations.js +568 -0
- package/dist/component/bulkOperations.js.map +1 -0
- package/dist/component/contentEntries.d.ts +719 -0
- package/dist/component/contentEntries.d.ts.map +1 -0
- package/dist/component/contentEntries.js +1617 -0
- package/dist/component/contentEntries.js.map +1 -0
- package/dist/component/contentEntryMutations.d.ts +505 -0
- package/dist/component/contentEntryMutations.d.ts.map +1 -0
- package/dist/component/contentEntryMutations.js +1009 -0
- package/dist/component/contentEntryMutations.js.map +1 -0
- package/dist/component/contentEntryValidation.d.ts +115 -0
- package/dist/component/contentEntryValidation.d.ts.map +1 -0
- package/dist/component/contentEntryValidation.js +546 -0
- package/dist/component/contentEntryValidation.js.map +1 -0
- package/dist/component/contentLock.d.ts +328 -0
- package/dist/component/contentLock.d.ts.map +1 -0
- package/dist/component/contentLock.js +471 -0
- package/dist/component/contentLock.js.map +1 -0
- package/dist/component/contentTypeMigration.d.ts +411 -0
- package/dist/component/contentTypeMigration.d.ts.map +1 -0
- package/dist/component/contentTypeMigration.js +805 -0
- package/dist/component/contentTypeMigration.js.map +1 -0
- package/dist/component/contentTypeMutations.d.ts +975 -0
- package/dist/component/contentTypeMutations.d.ts.map +1 -0
- package/dist/component/contentTypeMutations.js +768 -0
- package/dist/component/contentTypeMutations.js.map +1 -0
- package/dist/component/contentTypes.d.ts +538 -0
- package/dist/component/contentTypes.d.ts.map +1 -0
- package/dist/component/contentTypes.js +304 -0
- package/dist/component/contentTypes.js.map +1 -0
- package/dist/component/convex.config.d.ts +42 -0
- package/dist/component/convex.config.d.ts.map +1 -0
- package/dist/component/convex.config.js +43 -0
- package/dist/component/convex.config.js.map +1 -0
- package/dist/component/documentTypes.d.ts +186 -0
- package/dist/component/documentTypes.d.ts.map +1 -0
- package/dist/component/documentTypes.js +23 -0
- package/dist/component/documentTypes.js.map +1 -0
- package/dist/component/eventEmitter.d.ts +281 -0
- package/dist/component/eventEmitter.d.ts.map +1 -0
- package/dist/component/eventEmitter.js +300 -0
- package/dist/component/eventEmitter.js.map +1 -0
- package/dist/component/exportImport.d.ts +1120 -0
- package/dist/component/exportImport.d.ts.map +1 -0
- package/dist/component/exportImport.js +931 -0
- package/dist/component/exportImport.js.map +1 -0
- package/dist/component/index.d.ts +28 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/component/index.js +142 -0
- package/dist/component/index.js.map +1 -0
- package/dist/component/lib/deepReferenceResolver.d.ts +252 -0
- package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -0
- package/dist/component/lib/deepReferenceResolver.js +601 -0
- package/dist/component/lib/deepReferenceResolver.js.map +1 -0
- package/dist/component/lib/errors.d.ts +306 -0
- package/dist/component/lib/errors.d.ts.map +1 -0
- package/dist/component/lib/errors.js +407 -0
- package/dist/component/lib/errors.js.map +1 -0
- package/dist/component/lib/index.d.ts +10 -0
- package/dist/component/lib/index.d.ts.map +1 -0
- package/dist/component/lib/index.js +33 -0
- package/dist/component/lib/index.js.map +1 -0
- package/dist/component/lib/mediaReferenceResolver.d.ts +217 -0
- package/dist/component/lib/mediaReferenceResolver.d.ts.map +1 -0
- package/dist/component/lib/mediaReferenceResolver.js +326 -0
- package/dist/component/lib/mediaReferenceResolver.js.map +1 -0
- package/dist/component/lib/metadataExtractor.d.ts +245 -0
- package/dist/component/lib/metadataExtractor.d.ts.map +1 -0
- package/dist/component/lib/metadataExtractor.js +548 -0
- package/dist/component/lib/metadataExtractor.js.map +1 -0
- package/dist/component/lib/mutationAuth.d.ts +95 -0
- package/dist/component/lib/mutationAuth.d.ts.map +1 -0
- package/dist/component/lib/mutationAuth.js +146 -0
- package/dist/component/lib/mutationAuth.js.map +1 -0
- package/dist/component/lib/queries.d.ts +17 -0
- package/dist/component/lib/queries.d.ts.map +1 -0
- package/dist/component/lib/queries.js +49 -0
- package/dist/component/lib/queries.js.map +1 -0
- package/dist/component/lib/ragContentChunker.d.ts +423 -0
- package/dist/component/lib/ragContentChunker.d.ts.map +1 -0
- package/dist/component/lib/ragContentChunker.js +897 -0
- package/dist/component/lib/ragContentChunker.js.map +1 -0
- package/dist/component/lib/referenceResolver.d.ts +175 -0
- package/dist/component/lib/referenceResolver.d.ts.map +1 -0
- package/dist/component/lib/referenceResolver.js +293 -0
- package/dist/component/lib/referenceResolver.js.map +1 -0
- package/dist/component/lib/slugGenerator.d.ts +71 -0
- package/dist/component/lib/slugGenerator.d.ts.map +1 -0
- package/dist/component/lib/slugGenerator.js +207 -0
- package/dist/component/lib/slugGenerator.js.map +1 -0
- package/dist/component/lib/slugUniqueness.d.ts +131 -0
- package/dist/component/lib/slugUniqueness.d.ts.map +1 -0
- package/dist/component/lib/slugUniqueness.js +229 -0
- package/dist/component/lib/slugUniqueness.js.map +1 -0
- package/dist/component/lib/softDelete.d.ts +18 -0
- package/dist/component/lib/softDelete.d.ts.map +1 -0
- package/dist/component/lib/softDelete.js +29 -0
- package/dist/component/lib/softDelete.js.map +1 -0
- package/dist/component/localeFallbackChain.d.ts +410 -0
- package/dist/component/localeFallbackChain.d.ts.map +1 -0
- package/dist/component/localeFallbackChain.js +467 -0
- package/dist/component/localeFallbackChain.js.map +1 -0
- package/dist/component/localeFields.d.ts +508 -0
- package/dist/component/localeFields.d.ts.map +1 -0
- package/dist/component/localeFields.js +592 -0
- package/dist/component/localeFields.js.map +1 -0
- package/dist/component/mediaAssetMutations.d.ts +235 -0
- package/dist/component/mediaAssetMutations.d.ts.map +1 -0
- package/dist/component/mediaAssetMutations.js +558 -0
- package/dist/component/mediaAssetMutations.js.map +1 -0
- package/dist/component/mediaAssets.d.ts +168 -0
- package/dist/component/mediaAssets.d.ts.map +1 -0
- package/dist/component/mediaAssets.js +618 -0
- package/dist/component/mediaAssets.js.map +1 -0
- package/dist/component/mediaFolderMutations.d.ts +642 -0
- package/dist/component/mediaFolderMutations.d.ts.map +1 -0
- package/dist/component/mediaFolderMutations.js +849 -0
- package/dist/component/mediaFolderMutations.js.map +1 -0
- package/dist/component/mediaUploadMutations.d.ts +136 -0
- package/dist/component/mediaUploadMutations.d.ts.map +1 -0
- package/dist/component/mediaUploadMutations.js +205 -0
- package/dist/component/mediaUploadMutations.js.map +1 -0
- package/dist/component/mediaVariantMutations.d.ts +468 -0
- package/dist/component/mediaVariantMutations.d.ts.map +1 -0
- package/dist/component/mediaVariantMutations.js +737 -0
- package/dist/component/mediaVariantMutations.js.map +1 -0
- package/dist/component/mediaVariants.d.ts +525 -0
- package/dist/component/mediaVariants.d.ts.map +1 -0
- package/dist/component/mediaVariants.js +661 -0
- package/dist/component/mediaVariants.js.map +1 -0
- package/dist/component/ragContentIndexer.d.ts +595 -0
- package/dist/component/ragContentIndexer.d.ts.map +1 -0
- package/dist/component/ragContentIndexer.js +794 -0
- package/dist/component/ragContentIndexer.js.map +1 -0
- package/dist/component/rateLimitHooks.d.ts +266 -0
- package/dist/component/rateLimitHooks.d.ts.map +1 -0
- package/dist/component/rateLimitHooks.js +412 -0
- package/dist/component/rateLimitHooks.js.map +1 -0
- package/dist/component/roles.d.ts +649 -0
- package/dist/component/roles.d.ts.map +1 -0
- package/dist/component/roles.js +884 -0
- package/dist/component/roles.js.map +1 -0
- package/dist/component/scheduledPublish.d.ts +182 -0
- package/dist/component/scheduledPublish.d.ts.map +1 -0
- package/dist/component/scheduledPublish.js +304 -0
- package/dist/component/scheduledPublish.js.map +1 -0
- package/dist/component/schema.d.ts +4114 -0
- package/dist/component/schema.d.ts.map +1 -0
- package/dist/component/schema.js +469 -0
- package/dist/component/schema.js.map +1 -0
- package/dist/component/taxonomies.d.ts +476 -0
- package/dist/component/taxonomies.d.ts.map +1 -0
- package/dist/component/taxonomies.js +785 -0
- package/dist/component/taxonomies.js.map +1 -0
- package/dist/component/taxonomyMutations.d.ts +206 -0
- package/dist/component/taxonomyMutations.d.ts.map +1 -0
- package/dist/component/taxonomyMutations.js +1001 -0
- package/dist/component/taxonomyMutations.js.map +1 -0
- package/dist/component/trash.d.ts +265 -0
- package/dist/component/trash.d.ts.map +1 -0
- package/dist/component/trash.js +621 -0
- package/dist/component/trash.js.map +1 -0
- package/dist/component/types.d.ts +4 -0
- package/dist/component/types.d.ts.map +1 -0
- package/dist/component/types.js +2 -0
- package/dist/component/types.js.map +1 -0
- package/dist/component/userContext.d.ts +508 -0
- package/dist/component/userContext.d.ts.map +1 -0
- package/dist/component/userContext.js +615 -0
- package/dist/component/userContext.js.map +1 -0
- package/dist/component/validation.d.ts +387 -0
- package/dist/component/validation.d.ts.map +1 -0
- package/dist/component/validation.js +1052 -0
- package/dist/component/validation.js.map +1 -0
- package/dist/component/validators.d.ts +4645 -0
- package/dist/component/validators.d.ts.map +1 -0
- package/dist/component/validators.js +641 -0
- package/dist/component/validators.js.map +1 -0
- package/dist/component/versionMutations.d.ts +216 -0
- package/dist/component/versionMutations.d.ts.map +1 -0
- package/dist/component/versionMutations.js +321 -0
- package/dist/component/versionMutations.js.map +1 -0
- package/dist/component/webhookTrigger.d.ts +770 -0
- package/dist/component/webhookTrigger.d.ts.map +1 -0
- package/dist/component/webhookTrigger.js +1413 -0
- package/dist/component/webhookTrigger.js.map +1 -0
- package/dist/react/index.d.ts +316 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +558 -0
- package/dist/react/index.js.map +1 -0
- package/dist/test.d.ts +2230 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +1107 -0
- package/dist/test.js.map +1 -0
- package/package.json +95 -0
- package/src/cli/commands/admin.ts +104 -0
- package/src/cli/index.ts +21 -0
- package/src/cli/utils/detectConvexUrl.ts +54 -0
- package/src/cli/utils/openBrowser.ts +16 -0
- package/src/client/admin-config.ts +138 -0
- package/src/client/adminApi.ts +942 -0
- package/src/client/agentTools.ts +1311 -0
- package/src/client/argTypes.ts +316 -0
- package/src/client/field-types.ts +187 -0
- package/src/client/index.ts +1301 -0
- package/src/client/queryBuilder.ts +1100 -0
- package/src/client/schema/codegen.ts +500 -0
- package/src/client/schema/defineContentType.ts +501 -0
- package/src/client/schema/index.ts +169 -0
- package/src/client/schema/schemaDrift.ts +574 -0
- package/src/client/schema/typedClient.ts +688 -0
- package/src/client/schema/types.ts +666 -0
- package/src/client/types.ts +723 -0
- package/src/client/workflows.ts +141 -0
- package/src/client/wrapper.ts +4304 -0
- package/src/component/_generated/api.ts +140 -0
- package/src/component/_generated/component.ts +5029 -0
- package/src/component/_generated/dataModel.ts +60 -0
- package/src/component/_generated/server.ts +156 -0
- package/src/component/authorization.ts +647 -0
- package/src/component/authorizationHooks.ts +668 -0
- package/src/component/bulkOperations.ts +687 -0
- package/src/component/contentEntries.ts +1976 -0
- package/src/component/contentEntryMutations.ts +1223 -0
- package/src/component/contentEntryValidation.ts +707 -0
- package/src/component/contentLock.ts +550 -0
- package/src/component/contentTypeMigration.ts +1064 -0
- package/src/component/contentTypeMutations.ts +969 -0
- package/src/component/contentTypes.ts +346 -0
- package/src/component/convex.config.ts +44 -0
- package/src/component/documentTypes.ts +240 -0
- package/src/component/eventEmitter.ts +485 -0
- package/src/component/exportImport.ts +1169 -0
- package/src/component/index.ts +491 -0
- package/src/component/lib/deepReferenceResolver.ts +999 -0
- package/src/component/lib/errors.ts +816 -0
- package/src/component/lib/index.ts +145 -0
- package/src/component/lib/mediaReferenceResolver.ts +495 -0
- package/src/component/lib/metadataExtractor.ts +792 -0
- package/src/component/lib/mutationAuth.ts +199 -0
- package/src/component/lib/queries.ts +79 -0
- package/src/component/lib/ragContentChunker.ts +1371 -0
- package/src/component/lib/referenceResolver.ts +430 -0
- package/src/component/lib/slugGenerator.ts +262 -0
- package/src/component/lib/slugUniqueness.ts +333 -0
- package/src/component/lib/softDelete.ts +44 -0
- package/src/component/localeFallbackChain.ts +673 -0
- package/src/component/localeFields.ts +896 -0
- package/src/component/mediaAssetMutations.ts +725 -0
- package/src/component/mediaAssets.ts +932 -0
- package/src/component/mediaFolderMutations.ts +1046 -0
- package/src/component/mediaUploadMutations.ts +224 -0
- package/src/component/mediaVariantMutations.ts +900 -0
- package/src/component/mediaVariants.ts +793 -0
- package/src/component/ragContentIndexer.ts +1067 -0
- package/src/component/rateLimitHooks.ts +572 -0
- package/src/component/roles.ts +1360 -0
- package/src/component/scheduledPublish.ts +358 -0
- package/src/component/schema.ts +617 -0
- package/src/component/taxonomies.ts +949 -0
- package/src/component/taxonomyMutations.ts +1210 -0
- package/src/component/trash.ts +724 -0
- package/src/component/userContext.ts +898 -0
- package/src/component/validation.ts +1388 -0
- package/src/component/validators.ts +949 -0
- package/src/component/versionMutations.ts +392 -0
- package/src/component/webhookTrigger.ts +1922 -0
- package/src/react/index.ts +898 -0
- package/src/test.ts +1580 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/component/roles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Publishing Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to schedule content entries for future publication.
|
|
5
|
+
* Uses Convex scheduled functions to automatically publish entries at specified times.
|
|
6
|
+
*
|
|
7
|
+
* Workflow:
|
|
8
|
+
* 1. User calls `scheduleEntry` with an entry ID and publish timestamp
|
|
9
|
+
* 2. Entry status changes to "scheduled" with `scheduledPublishAt` set
|
|
10
|
+
* 3. A Convex scheduled function is created to run at that time
|
|
11
|
+
* 4. The scheduled function ID is stored for potential cancellation
|
|
12
|
+
* 5. At the scheduled time, the internal `executeScheduledPublish` mutation runs
|
|
13
|
+
* 6. The entry is published (or skipped if status/conditions have changed)
|
|
14
|
+
*
|
|
15
|
+
* Cancellation:
|
|
16
|
+
* - User can call `cancelScheduledPublish` to revert to draft and cancel the scheduled job
|
|
17
|
+
* - Rescheduling automatically cancels any existing scheduled job
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Mutation to schedule a content entry for future publication.
|
|
21
|
+
*
|
|
22
|
+
* This sets the entry status to "scheduled" and creates a Convex scheduled
|
|
23
|
+
* function that will automatically publish the entry at the specified time.
|
|
24
|
+
*
|
|
25
|
+
* Key behaviors:
|
|
26
|
+
* 1. **Validation**: The entry must exist, not be deleted, and not already be published
|
|
27
|
+
* 2. **Time Validation**: The publish time must be in the future (at least 1 minute)
|
|
28
|
+
* 3. **Rescheduling**: If already scheduled, cancels the existing scheduled job first
|
|
29
|
+
* 4. **Atomicity**: Status change and job scheduling happen atomically
|
|
30
|
+
*
|
|
31
|
+
* @param id - The content entry ID to schedule
|
|
32
|
+
* @param publishAt - Unix timestamp (ms) when the entry should be published
|
|
33
|
+
* @param updatedBy - Optional user ID for audit trail
|
|
34
|
+
*
|
|
35
|
+
* @returns The updated content entry with scheduled status
|
|
36
|
+
*
|
|
37
|
+
* @throws Error if the entry does not exist
|
|
38
|
+
* @throws Error if the entry has been deleted
|
|
39
|
+
* @throws Error if the entry is already published
|
|
40
|
+
* @throws Error if the publish time is not in the future
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* // Schedule a post to publish tomorrow at 9 AM
|
|
45
|
+
* const tomorrow9am = new Date();
|
|
46
|
+
* tomorrow9am.setDate(tomorrow9am.getDate() + 1);
|
|
47
|
+
* tomorrow9am.setHours(9, 0, 0, 0);
|
|
48
|
+
*
|
|
49
|
+
* const scheduled = await ctx.runMutation(api.scheduledPublish.scheduleEntry, {
|
|
50
|
+
* id: entryId,
|
|
51
|
+
* publishAt: tomorrow9am.getTime(),
|
|
52
|
+
* updatedBy: currentUserId,
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare const scheduleEntry: import("convex/server").RegisteredMutation<"public", {
|
|
57
|
+
updatedBy?: string | undefined;
|
|
58
|
+
id: import("convex/values").GenericId<"contentEntries">;
|
|
59
|
+
publishAt: number;
|
|
60
|
+
}, Promise<{
|
|
61
|
+
_id: import("convex/values").GenericId<"contentEntries">;
|
|
62
|
+
_creationTime: number;
|
|
63
|
+
deletedAt?: number | undefined;
|
|
64
|
+
createdBy?: string | undefined;
|
|
65
|
+
updatedBy?: string | undefined;
|
|
66
|
+
searchText?: string | undefined;
|
|
67
|
+
locale?: string | undefined;
|
|
68
|
+
primaryEntryId?: import("convex/values").GenericId<"contentEntries"> | undefined;
|
|
69
|
+
scheduledPublishAt?: number | undefined;
|
|
70
|
+
firstPublishedAt?: number | undefined;
|
|
71
|
+
lastPublishedAt?: number | undefined;
|
|
72
|
+
lockedBy?: string | undefined;
|
|
73
|
+
lockExpiresAt?: number | undefined;
|
|
74
|
+
contentTypeId: import("convex/values").GenericId<"contentTypes">;
|
|
75
|
+
slug: string;
|
|
76
|
+
status: string;
|
|
77
|
+
data: any;
|
|
78
|
+
version: number;
|
|
79
|
+
}>>;
|
|
80
|
+
/**
|
|
81
|
+
* Mutation to cancel a scheduled publication and revert to draft.
|
|
82
|
+
*
|
|
83
|
+
* This reverts the entry status to "draft" and clears the scheduled publish time.
|
|
84
|
+
* The scheduled function will still run, but it will detect the status change
|
|
85
|
+
* and skip the publish operation.
|
|
86
|
+
*
|
|
87
|
+
* @param id - The content entry ID to cancel scheduling for
|
|
88
|
+
* @param updatedBy - Optional user ID for audit trail
|
|
89
|
+
*
|
|
90
|
+
* @returns The updated content entry (now in draft status)
|
|
91
|
+
*
|
|
92
|
+
* @throws Error if the entry does not exist
|
|
93
|
+
* @throws Error if the entry has been deleted
|
|
94
|
+
* @throws Error if the entry is not currently scheduled
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const draft = await ctx.runMutation(api.scheduledPublish.cancelScheduledPublish, {
|
|
99
|
+
* id: entryId,
|
|
100
|
+
* updatedBy: currentUserId,
|
|
101
|
+
* });
|
|
102
|
+
* console.log(draft.status); // "draft"
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export declare const cancelScheduledPublish: import("convex/server").RegisteredMutation<"public", {
|
|
106
|
+
updatedBy?: string | undefined;
|
|
107
|
+
id: import("convex/values").GenericId<"contentEntries">;
|
|
108
|
+
}, Promise<{
|
|
109
|
+
_id: import("convex/values").GenericId<"contentEntries">;
|
|
110
|
+
_creationTime: number;
|
|
111
|
+
deletedAt?: number | undefined;
|
|
112
|
+
createdBy?: string | undefined;
|
|
113
|
+
updatedBy?: string | undefined;
|
|
114
|
+
searchText?: string | undefined;
|
|
115
|
+
locale?: string | undefined;
|
|
116
|
+
primaryEntryId?: import("convex/values").GenericId<"contentEntries"> | undefined;
|
|
117
|
+
scheduledPublishAt?: number | undefined;
|
|
118
|
+
firstPublishedAt?: number | undefined;
|
|
119
|
+
lastPublishedAt?: number | undefined;
|
|
120
|
+
lockedBy?: string | undefined;
|
|
121
|
+
lockExpiresAt?: number | undefined;
|
|
122
|
+
contentTypeId: import("convex/values").GenericId<"contentTypes">;
|
|
123
|
+
slug: string;
|
|
124
|
+
status: string;
|
|
125
|
+
data: any;
|
|
126
|
+
version: number;
|
|
127
|
+
}>>;
|
|
128
|
+
/**
|
|
129
|
+
* Internal mutation that executes the scheduled publish.
|
|
130
|
+
*
|
|
131
|
+
* This is called by Convex's scheduler at the scheduled time.
|
|
132
|
+
* It verifies the entry is still in the expected state before publishing.
|
|
133
|
+
*
|
|
134
|
+
* Safety checks:
|
|
135
|
+
* - Entry still exists and is not deleted
|
|
136
|
+
* - Entry is still in "scheduled" status (not manually published or cancelled)
|
|
137
|
+
* - The scheduled time matches (in case of rescheduling)
|
|
138
|
+
*
|
|
139
|
+
* If any check fails, the publish is skipped silently (no error thrown).
|
|
140
|
+
* This prevents orphaned scheduled jobs from causing issues.
|
|
141
|
+
*/
|
|
142
|
+
export declare const executeScheduledPublish: import("convex/server").RegisteredMutation<"internal", {
|
|
143
|
+
entryId: import("convex/values").GenericId<"contentEntries">;
|
|
144
|
+
expectedPublishAt: number;
|
|
145
|
+
}, Promise<void>>;
|
|
146
|
+
/**
|
|
147
|
+
* Query to get all entries scheduled for publication within a time range.
|
|
148
|
+
*
|
|
149
|
+
* Useful for:
|
|
150
|
+
* - Displaying upcoming scheduled content in the admin UI
|
|
151
|
+
* - Monitoring scheduled publishing queue
|
|
152
|
+
*
|
|
153
|
+
* @param from - Start of time range (optional, defaults to now)
|
|
154
|
+
* @param to - End of time range (optional, defaults to 30 days from now)
|
|
155
|
+
*
|
|
156
|
+
* @returns Array of scheduled content entries, sorted by scheduled time
|
|
157
|
+
*/
|
|
158
|
+
export declare const getScheduledEntries: import("convex/server").RegisteredQuery<"public", {
|
|
159
|
+
contentTypeId?: import("convex/values").GenericId<"contentTypes"> | undefined;
|
|
160
|
+
from?: number | undefined;
|
|
161
|
+
to?: number | undefined;
|
|
162
|
+
}, Promise<{
|
|
163
|
+
_id: import("convex/values").GenericId<"contentEntries">;
|
|
164
|
+
_creationTime: number;
|
|
165
|
+
deletedAt?: number | undefined;
|
|
166
|
+
createdBy?: string | undefined;
|
|
167
|
+
updatedBy?: string | undefined;
|
|
168
|
+
searchText?: string | undefined;
|
|
169
|
+
locale?: string | undefined;
|
|
170
|
+
primaryEntryId?: import("convex/values").GenericId<"contentEntries"> | undefined;
|
|
171
|
+
scheduledPublishAt?: number | undefined;
|
|
172
|
+
firstPublishedAt?: number | undefined;
|
|
173
|
+
lastPublishedAt?: number | undefined;
|
|
174
|
+
lockedBy?: string | undefined;
|
|
175
|
+
lockExpiresAt?: number | undefined;
|
|
176
|
+
contentTypeId: import("convex/values").GenericId<"contentTypes">;
|
|
177
|
+
slug: string;
|
|
178
|
+
status: string;
|
|
179
|
+
data: any;
|
|
180
|
+
version: number;
|
|
181
|
+
}[]>>;
|
|
182
|
+
//# sourceMappingURL=scheduledPublish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduledPublish.d.ts","sourceRoot":"","sources":["../../src/component/scheduledPublish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;GAgExB,CAAC;AAMH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;GAuCjC,CAAC;AAMH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB;;;iBAyElC,CAAC;AAMH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;KA8C9B,CAAC"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Publishing Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to schedule content entries for future publication.
|
|
5
|
+
* Uses Convex scheduled functions to automatically publish entries at specified times.
|
|
6
|
+
*
|
|
7
|
+
* Workflow:
|
|
8
|
+
* 1. User calls `scheduleEntry` with an entry ID and publish timestamp
|
|
9
|
+
* 2. Entry status changes to "scheduled" with `scheduledPublishAt` set
|
|
10
|
+
* 3. A Convex scheduled function is created to run at that time
|
|
11
|
+
* 4. The scheduled function ID is stored for potential cancellation
|
|
12
|
+
* 5. At the scheduled time, the internal `executeScheduledPublish` mutation runs
|
|
13
|
+
* 6. The entry is published (or skipped if status/conditions have changed)
|
|
14
|
+
*
|
|
15
|
+
* Cancellation:
|
|
16
|
+
* - User can call `cancelScheduledPublish` to revert to draft and cancel the scheduled job
|
|
17
|
+
* - Rescheduling automatically cancels any existing scheduled job
|
|
18
|
+
*/
|
|
19
|
+
import { v } from "convex/values";
|
|
20
|
+
import { isDeleted } from "./lib/softDelete.js";
|
|
21
|
+
import { mutation, internalMutation, query } from "./_generated/server.js";
|
|
22
|
+
import { internal } from "./_generated/api.js";
|
|
23
|
+
import { contentEntryDoc, scheduleEntryArgs } from "./validators.js";
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Schedule Entry Mutation
|
|
26
|
+
// =============================================================================
|
|
27
|
+
/**
|
|
28
|
+
* Mutation to schedule a content entry for future publication.
|
|
29
|
+
*
|
|
30
|
+
* This sets the entry status to "scheduled" and creates a Convex scheduled
|
|
31
|
+
* function that will automatically publish the entry at the specified time.
|
|
32
|
+
*
|
|
33
|
+
* Key behaviors:
|
|
34
|
+
* 1. **Validation**: The entry must exist, not be deleted, and not already be published
|
|
35
|
+
* 2. **Time Validation**: The publish time must be in the future (at least 1 minute)
|
|
36
|
+
* 3. **Rescheduling**: If already scheduled, cancels the existing scheduled job first
|
|
37
|
+
* 4. **Atomicity**: Status change and job scheduling happen atomically
|
|
38
|
+
*
|
|
39
|
+
* @param id - The content entry ID to schedule
|
|
40
|
+
* @param publishAt - Unix timestamp (ms) when the entry should be published
|
|
41
|
+
* @param updatedBy - Optional user ID for audit trail
|
|
42
|
+
*
|
|
43
|
+
* @returns The updated content entry with scheduled status
|
|
44
|
+
*
|
|
45
|
+
* @throws Error if the entry does not exist
|
|
46
|
+
* @throws Error if the entry has been deleted
|
|
47
|
+
* @throws Error if the entry is already published
|
|
48
|
+
* @throws Error if the publish time is not in the future
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // Schedule a post to publish tomorrow at 9 AM
|
|
53
|
+
* const tomorrow9am = new Date();
|
|
54
|
+
* tomorrow9am.setDate(tomorrow9am.getDate() + 1);
|
|
55
|
+
* tomorrow9am.setHours(9, 0, 0, 0);
|
|
56
|
+
*
|
|
57
|
+
* const scheduled = await ctx.runMutation(api.scheduledPublish.scheduleEntry, {
|
|
58
|
+
* id: entryId,
|
|
59
|
+
* publishAt: tomorrow9am.getTime(),
|
|
60
|
+
* updatedBy: currentUserId,
|
|
61
|
+
* });
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export const scheduleEntry = mutation({
|
|
65
|
+
args: scheduleEntryArgs.fields,
|
|
66
|
+
returns: contentEntryDoc,
|
|
67
|
+
handler: async (ctx, args) => {
|
|
68
|
+
const { id, publishAt, updatedBy } = args;
|
|
69
|
+
const entry = await ctx.db.get(id);
|
|
70
|
+
if (!entry) {
|
|
71
|
+
throw new Error(`Content entry not found: ${id}`);
|
|
72
|
+
}
|
|
73
|
+
if (isDeleted(entry)) {
|
|
74
|
+
throw new Error(`Content entry has been deleted: ${id}`);
|
|
75
|
+
}
|
|
76
|
+
if (entry.status === "published") {
|
|
77
|
+
throw new Error(`Content entry is already published: ${id}`);
|
|
78
|
+
}
|
|
79
|
+
if (entry.status === "archived") {
|
|
80
|
+
throw new Error(`Cannot schedule archived content. Restore it first: ${id}`);
|
|
81
|
+
}
|
|
82
|
+
// Validate the publish time is in the future (at least 1 minute from now)
|
|
83
|
+
const now = Date.now();
|
|
84
|
+
const minimumScheduleTime = now + 60 * 1000; // 1 minute from now
|
|
85
|
+
if (publishAt < minimumScheduleTime) {
|
|
86
|
+
throw new Error(`Scheduled publish time must be at least 1 minute in the future. ` +
|
|
87
|
+
`Received: ${new Date(publishAt).toISOString()}, ` +
|
|
88
|
+
`Minimum: ${new Date(minimumScheduleTime).toISOString()}`);
|
|
89
|
+
}
|
|
90
|
+
// If already scheduled, we need to cancel the existing scheduled job
|
|
91
|
+
// Note: We can't actually cancel Convex scheduled functions directly,
|
|
92
|
+
// but the executeScheduledPublish function will check if the entry
|
|
93
|
+
// is still scheduled with the same timestamp before publishing
|
|
94
|
+
// Schedule the publish function to run at the specified time
|
|
95
|
+
await ctx.scheduler.runAt(publishAt, internal.scheduledPublish.executeScheduledPublish, {
|
|
96
|
+
entryId: id,
|
|
97
|
+
expectedPublishAt: publishAt,
|
|
98
|
+
});
|
|
99
|
+
// Update the entry to scheduled status
|
|
100
|
+
await ctx.db.patch(id, {
|
|
101
|
+
status: "scheduled",
|
|
102
|
+
scheduledPublishAt: publishAt,
|
|
103
|
+
// Store the scheduled function ID for reference (as a string since it's a system ID)
|
|
104
|
+
updatedBy,
|
|
105
|
+
version: entry.version + 1,
|
|
106
|
+
});
|
|
107
|
+
const scheduledEntry = await ctx.db.get(id);
|
|
108
|
+
if (!scheduledEntry) {
|
|
109
|
+
throw new Error("Failed to retrieve scheduled entry");
|
|
110
|
+
}
|
|
111
|
+
return scheduledEntry;
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
// =============================================================================
|
|
115
|
+
// Cancel Scheduled Publish Mutation
|
|
116
|
+
// =============================================================================
|
|
117
|
+
/**
|
|
118
|
+
* Mutation to cancel a scheduled publication and revert to draft.
|
|
119
|
+
*
|
|
120
|
+
* This reverts the entry status to "draft" and clears the scheduled publish time.
|
|
121
|
+
* The scheduled function will still run, but it will detect the status change
|
|
122
|
+
* and skip the publish operation.
|
|
123
|
+
*
|
|
124
|
+
* @param id - The content entry ID to cancel scheduling for
|
|
125
|
+
* @param updatedBy - Optional user ID for audit trail
|
|
126
|
+
*
|
|
127
|
+
* @returns The updated content entry (now in draft status)
|
|
128
|
+
*
|
|
129
|
+
* @throws Error if the entry does not exist
|
|
130
|
+
* @throws Error if the entry has been deleted
|
|
131
|
+
* @throws Error if the entry is not currently scheduled
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* const draft = await ctx.runMutation(api.scheduledPublish.cancelScheduledPublish, {
|
|
136
|
+
* id: entryId,
|
|
137
|
+
* updatedBy: currentUserId,
|
|
138
|
+
* });
|
|
139
|
+
* console.log(draft.status); // "draft"
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export const cancelScheduledPublish = mutation({
|
|
143
|
+
args: {
|
|
144
|
+
/** The ID of the content entry to cancel scheduling for */
|
|
145
|
+
id: v.id("contentEntries"),
|
|
146
|
+
/** User ID performing the cancellation (for audit trail) */
|
|
147
|
+
updatedBy: v.optional(v.string()),
|
|
148
|
+
},
|
|
149
|
+
returns: contentEntryDoc,
|
|
150
|
+
handler: async (ctx, args) => {
|
|
151
|
+
const { id, updatedBy } = args;
|
|
152
|
+
const entry = await ctx.db.get(id);
|
|
153
|
+
if (!entry) {
|
|
154
|
+
throw new Error(`Content entry not found: ${id}`);
|
|
155
|
+
}
|
|
156
|
+
if (isDeleted(entry)) {
|
|
157
|
+
throw new Error(`Content entry has been deleted: ${id}`);
|
|
158
|
+
}
|
|
159
|
+
if (entry.status !== "scheduled") {
|
|
160
|
+
throw new Error(`Content entry is not scheduled. Current status: ${entry.status}`);
|
|
161
|
+
}
|
|
162
|
+
// Revert to draft status and clear scheduled time
|
|
163
|
+
await ctx.db.patch(id, {
|
|
164
|
+
status: "draft",
|
|
165
|
+
scheduledPublishAt: undefined,
|
|
166
|
+
updatedBy,
|
|
167
|
+
version: entry.version + 1,
|
|
168
|
+
});
|
|
169
|
+
const updatedEntry = await ctx.db.get(id);
|
|
170
|
+
if (!updatedEntry) {
|
|
171
|
+
throw new Error("Failed to retrieve updated entry");
|
|
172
|
+
}
|
|
173
|
+
return updatedEntry;
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
// =============================================================================
|
|
177
|
+
// Execute Scheduled Publish (Internal)
|
|
178
|
+
// =============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* Internal mutation that executes the scheduled publish.
|
|
181
|
+
*
|
|
182
|
+
* This is called by Convex's scheduler at the scheduled time.
|
|
183
|
+
* It verifies the entry is still in the expected state before publishing.
|
|
184
|
+
*
|
|
185
|
+
* Safety checks:
|
|
186
|
+
* - Entry still exists and is not deleted
|
|
187
|
+
* - Entry is still in "scheduled" status (not manually published or cancelled)
|
|
188
|
+
* - The scheduled time matches (in case of rescheduling)
|
|
189
|
+
*
|
|
190
|
+
* If any check fails, the publish is skipped silently (no error thrown).
|
|
191
|
+
* This prevents orphaned scheduled jobs from causing issues.
|
|
192
|
+
*/
|
|
193
|
+
export const executeScheduledPublish = internalMutation({
|
|
194
|
+
args: {
|
|
195
|
+
/** The ID of the content entry to publish */
|
|
196
|
+
entryId: v.id("contentEntries"),
|
|
197
|
+
/** The expected publish timestamp (for validation) */
|
|
198
|
+
expectedPublishAt: v.number(),
|
|
199
|
+
},
|
|
200
|
+
handler: async (ctx, args) => {
|
|
201
|
+
const { entryId, expectedPublishAt } = args;
|
|
202
|
+
const entry = await ctx.db.get(entryId);
|
|
203
|
+
// Safety checks - skip publish if conditions aren't met
|
|
204
|
+
if (!entry) {
|
|
205
|
+
console.log(`Scheduled publish skipped: Entry ${entryId} no longer exists`);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (isDeleted(entry)) {
|
|
209
|
+
console.log(`Scheduled publish skipped: Entry ${entryId} has been deleted`);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (entry.status !== "scheduled") {
|
|
213
|
+
console.log(`Scheduled publish skipped: Entry ${entryId} status is "${entry.status}", not "scheduled"`);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (entry.scheduledPublishAt !== expectedPublishAt) {
|
|
217
|
+
console.log(`Scheduled publish skipped: Entry ${entryId} was rescheduled ` +
|
|
218
|
+
`(expected ${expectedPublishAt}, found ${entry.scheduledPublishAt})`);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const now = Date.now();
|
|
222
|
+
// Create a version snapshot before publishing
|
|
223
|
+
await ctx.db.insert("contentVersions", {
|
|
224
|
+
entryId,
|
|
225
|
+
versionNumber: entry.version,
|
|
226
|
+
data: entry.data,
|
|
227
|
+
slug: entry.slug,
|
|
228
|
+
status: entry.status,
|
|
229
|
+
changeDescription: "Scheduled publication",
|
|
230
|
+
createdBy: entry.updatedBy,
|
|
231
|
+
wasPublished: true,
|
|
232
|
+
publishedAt: now,
|
|
233
|
+
});
|
|
234
|
+
// Publish the entry
|
|
235
|
+
const updates = {
|
|
236
|
+
status: "published",
|
|
237
|
+
lastPublishedAt: now,
|
|
238
|
+
scheduledPublishAt: undefined,
|
|
239
|
+
version: entry.version + 1,
|
|
240
|
+
};
|
|
241
|
+
// Set firstPublishedAt only on first publication
|
|
242
|
+
if (entry.firstPublishedAt === undefined) {
|
|
243
|
+
updates.firstPublishedAt = now;
|
|
244
|
+
}
|
|
245
|
+
await ctx.db.patch(entryId, updates);
|
|
246
|
+
console.log(`Scheduled publish executed: Entry ${entryId} is now published`);
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
// =============================================================================
|
|
250
|
+
// Query for Scheduled Entries
|
|
251
|
+
// =============================================================================
|
|
252
|
+
/**
|
|
253
|
+
* Query to get all entries scheduled for publication within a time range.
|
|
254
|
+
*
|
|
255
|
+
* Useful for:
|
|
256
|
+
* - Displaying upcoming scheduled content in the admin UI
|
|
257
|
+
* - Monitoring scheduled publishing queue
|
|
258
|
+
*
|
|
259
|
+
* @param from - Start of time range (optional, defaults to now)
|
|
260
|
+
* @param to - End of time range (optional, defaults to 30 days from now)
|
|
261
|
+
*
|
|
262
|
+
* @returns Array of scheduled content entries, sorted by scheduled time
|
|
263
|
+
*/
|
|
264
|
+
export const getScheduledEntries = query({
|
|
265
|
+
args: {
|
|
266
|
+
/** Start of time range (ms timestamp). Defaults to now. */
|
|
267
|
+
from: v.optional(v.number()),
|
|
268
|
+
/** End of time range (ms timestamp). Defaults to 30 days from now. */
|
|
269
|
+
to: v.optional(v.number()),
|
|
270
|
+
/** Content type ID to filter by (optional) */
|
|
271
|
+
contentTypeId: v.optional(v.id("contentTypes")),
|
|
272
|
+
},
|
|
273
|
+
handler: async (ctx, args) => {
|
|
274
|
+
const now = Date.now();
|
|
275
|
+
const from = args.from ?? now;
|
|
276
|
+
const to = args.to ?? now + 30 * 24 * 60 * 60 * 1000; // 30 days
|
|
277
|
+
// Query scheduled entries using the index
|
|
278
|
+
const query = ctx.db
|
|
279
|
+
.query("contentEntries")
|
|
280
|
+
.withIndex("by_scheduled_publish", (q) => q.eq("status", "scheduled"));
|
|
281
|
+
// Collect and filter by time range and optionally by content type
|
|
282
|
+
const entries = await query.collect();
|
|
283
|
+
return entries
|
|
284
|
+
.filter((entry) => {
|
|
285
|
+
// Must have a scheduled time in range
|
|
286
|
+
if (entry.scheduledPublishAt === undefined ||
|
|
287
|
+
entry.scheduledPublishAt < from ||
|
|
288
|
+
entry.scheduledPublishAt > to) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
// Must not be deleted
|
|
292
|
+
if (isDeleted(entry)) {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
// Filter by content type if specified
|
|
296
|
+
if (args.contentTypeId && entry.contentTypeId !== args.contentTypeId) {
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
return true;
|
|
300
|
+
})
|
|
301
|
+
.sort((a, b) => (a.scheduledPublishAt ?? 0) - (b.scheduledPublishAt ?? 0));
|
|
302
|
+
},
|
|
303
|
+
});
|
|
304
|
+
//# sourceMappingURL=scheduledPublish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduledPublish.js","sourceRoot":"","sources":["../../src/component/scheduledPublish.ts"],"names":[],"mappings":"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"}
|