33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
export const NewsletterStatusEnum = z.enum(['draft', 'scheduled', 'sending', 'sent', 'failed']);
|
|
|
|
export const CreateNewsletterSchema = z.object({
|
|
accountId: z.string().uuid(),
|
|
templateId: z.string().uuid().optional(),
|
|
subject: z.string().min(1).max(256),
|
|
bodyHtml: z.string().min(1),
|
|
bodyText: z.string().optional(),
|
|
scheduledAt: z.string().optional(),
|
|
});
|
|
export type CreateNewsletterInput = z.infer<typeof CreateNewsletterSchema>;
|
|
|
|
export const CreateTemplateSchema = z.object({
|
|
accountId: z.string().uuid(),
|
|
name: z.string().min(1),
|
|
subject: z.string().min(1),
|
|
bodyHtml: z.string().min(1),
|
|
bodyText: z.string().optional(),
|
|
variables: z.array(z.string()).default([]),
|
|
});
|
|
|
|
export const SelectRecipientsSchema = z.object({
|
|
newsletterId: z.string().uuid(),
|
|
memberFilter: z.object({
|
|
status: z.array(z.string()).optional(),
|
|
duesCategoryId: z.string().uuid().optional(),
|
|
hasEmail: z.boolean().default(true),
|
|
}).optional(),
|
|
manualEmails: z.array(z.string().email()).optional(),
|
|
});
|