Files
myeasycms-v2/packages/features/newsletter/src/schema/newsletter.schema.ts
2026-03-29 19:44:57 +02:00

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(),
});