mirror of
https://github.com/documenso/documenso.git
synced 2025-11-13 08:13:56 +10:00
fix: dirty type safe job definitions
This commit is contained in:
@ -7,6 +7,6 @@ import { SEND_SIGNING_EMAIL_JOB_DEFINITION } from './definitions/send-signing-em
|
|||||||
* triggering jobs.
|
* triggering jobs.
|
||||||
*/
|
*/
|
||||||
export const jobsClient = new JobClient([
|
export const jobsClient = new JobClient([
|
||||||
SEND_CONFIRMATION_EMAIL_JOB_DEFINITION,
|
|
||||||
SEND_SIGNING_EMAIL_JOB_DEFINITION,
|
SEND_SIGNING_EMAIL_JOB_DEFINITION,
|
||||||
|
SEND_CONFIRMATION_EMAIL_JOB_DEFINITION,
|
||||||
] as const);
|
] as const);
|
||||||
|
|||||||
@ -3,16 +3,20 @@ import { z } from 'zod';
|
|||||||
import { sendConfirmationToken } from '../../server-only/user/send-confirmation-token';
|
import { sendConfirmationToken } from '../../server-only/user/send-confirmation-token';
|
||||||
import type { JobDefinition } from '../client/_internal/job';
|
import type { JobDefinition } from '../client/_internal/job';
|
||||||
|
|
||||||
|
const SEND_CONFIRMATION_EMAIL_JOB_DEFINITION_ID = 'send.signup.confirmation.email';
|
||||||
|
|
||||||
|
const SEND_CONFIRMATION_EMAIL_JOB_DEFINITION_SCHEMA = z.object({
|
||||||
|
email: z.string().email(),
|
||||||
|
force: z.boolean().optional(),
|
||||||
|
});
|
||||||
|
|
||||||
export const SEND_CONFIRMATION_EMAIL_JOB_DEFINITION = {
|
export const SEND_CONFIRMATION_EMAIL_JOB_DEFINITION = {
|
||||||
id: 'send.signup.confirmation.email',
|
id: SEND_CONFIRMATION_EMAIL_JOB_DEFINITION_ID,
|
||||||
name: 'Send Confirmation Email',
|
name: 'Send Confirmation Email',
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
trigger: {
|
trigger: {
|
||||||
name: 'send.signup.confirmation.email',
|
name: SEND_CONFIRMATION_EMAIL_JOB_DEFINITION_ID,
|
||||||
schema: z.object({
|
schema: SEND_CONFIRMATION_EMAIL_JOB_DEFINITION_SCHEMA,
|
||||||
email: z.string().email(),
|
|
||||||
force: z.boolean().optional(),
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
handler: async ({ payload }) => {
|
handler: async ({ payload }) => {
|
||||||
await sendConfirmationToken({
|
await sendConfirmationToken({
|
||||||
@ -20,4 +24,7 @@ export const SEND_CONFIRMATION_EMAIL_JOB_DEFINITION = {
|
|||||||
force: payload.force,
|
force: payload.force,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
} as const satisfies JobDefinition;
|
} as const satisfies JobDefinition<
|
||||||
|
typeof SEND_CONFIRMATION_EMAIL_JOB_DEFINITION_ID,
|
||||||
|
z.infer<typeof SEND_CONFIRMATION_EMAIL_JOB_DEFINITION_SCHEMA>
|
||||||
|
>;
|
||||||
|
|||||||
@ -23,20 +23,24 @@ import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
|
|||||||
import { ZRequestMetadataSchema } from '../../universal/extract-request-metadata';
|
import { ZRequestMetadataSchema } from '../../universal/extract-request-metadata';
|
||||||
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
|
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
|
||||||
import { renderCustomEmailTemplate } from '../../utils/render-custom-email-template';
|
import { renderCustomEmailTemplate } from '../../utils/render-custom-email-template';
|
||||||
import type { JobDefinition } from '../client/_internal/job';
|
import { type JobDefinition } from '../client/_internal/job';
|
||||||
|
|
||||||
|
const SEND_SIGNING_EMAIL_JOB_DEFINITION_ID = 'send.signing.requested.email';
|
||||||
|
|
||||||
|
const SEND_SIGNING_EMAIL_JOB_DEFINITION_SCHEMA = z.object({
|
||||||
|
userId: z.number(),
|
||||||
|
documentId: z.number(),
|
||||||
|
recipientId: z.number(),
|
||||||
|
requestMetadata: ZRequestMetadataSchema.optional(),
|
||||||
|
});
|
||||||
|
|
||||||
export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
|
export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
|
||||||
id: 'send.signing.requested.email',
|
id: SEND_SIGNING_EMAIL_JOB_DEFINITION_ID,
|
||||||
name: 'Send Signing Email',
|
name: 'Send Signing Email',
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
trigger: {
|
trigger: {
|
||||||
name: 'send.signing.requested.email',
|
name: SEND_SIGNING_EMAIL_JOB_DEFINITION_ID,
|
||||||
schema: z.object({
|
schema: SEND_SIGNING_EMAIL_JOB_DEFINITION_SCHEMA,
|
||||||
userId: z.number(),
|
|
||||||
documentId: z.number(),
|
|
||||||
recipientId: z.number(),
|
|
||||||
requestMetadata: ZRequestMetadataSchema.optional(),
|
|
||||||
}),
|
|
||||||
},
|
},
|
||||||
handler: async ({ payload, io }) => {
|
handler: async ({ payload, io }) => {
|
||||||
const { userId, documentId, recipientId, requestMetadata } = payload;
|
const { userId, documentId, recipientId, requestMetadata } = payload;
|
||||||
@ -161,4 +165,7 @@ export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
} as const satisfies JobDefinition;
|
} as const satisfies JobDefinition<
|
||||||
|
typeof SEND_SIGNING_EMAIL_JOB_DEFINITION_ID,
|
||||||
|
z.infer<typeof SEND_SIGNING_EMAIL_JOB_DEFINITION_SCHEMA>
|
||||||
|
>;
|
||||||
|
|||||||
Reference in New Issue
Block a user