79 lines
4.6 KiB
JavaScript
79 lines
4.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.listModerationQueueSchema = exports.moderateCampaignSchema = exports.updateUserCampaignSchema = exports.createUserCampaignSchema = exports.campaignIdSchema = exports.listCampaignsSchema = exports.updateCampaignSchema = exports.createCampaignSchema = void 0;
|
|
const zod_1 = require("zod");
|
|
const client_1 = require("@prisma/client");
|
|
exports.createCampaignSchema = zod_1.z.object({
|
|
title: zod_1.z.string().min(1, 'Title is required').max(200),
|
|
description: zod_1.z.string().max(2000).optional(),
|
|
emailSubject: zod_1.z.string().min(1, 'Email subject is required').max(200),
|
|
emailBody: zod_1.z.string().min(1, 'Email body is required').max(10000),
|
|
callToAction: zod_1.z.string().max(500).optional(),
|
|
status: zod_1.z.nativeEnum(client_1.CampaignStatus).optional().default(client_1.CampaignStatus.DRAFT),
|
|
targetGovernmentLevels: zod_1.z.array(zod_1.z.nativeEnum(client_1.GovernmentLevel)).optional().default([]),
|
|
allowSmtpEmail: zod_1.z.boolean().optional().default(true),
|
|
allowMailtoLink: zod_1.z.boolean().optional().default(true),
|
|
collectUserInfo: zod_1.z.boolean().optional().default(true),
|
|
showEmailCount: zod_1.z.boolean().optional().default(true),
|
|
showCallCount: zod_1.z.boolean().optional().default(true),
|
|
allowEmailEditing: zod_1.z.boolean().optional().default(false),
|
|
allowCustomRecipients: zod_1.z.boolean().optional().default(false),
|
|
showResponseWall: zod_1.z.boolean().optional().default(false),
|
|
highlightCampaign: zod_1.z.boolean().optional().default(false),
|
|
coverPhoto: zod_1.z.string().url().max(500).optional(),
|
|
coverVideoId: zod_1.z.number().int().positive().nullable().optional(),
|
|
});
|
|
exports.updateCampaignSchema = zod_1.z.object({
|
|
title: zod_1.z.string().min(1).max(200).optional(),
|
|
description: zod_1.z.string().max(2000).nullable().optional(),
|
|
emailSubject: zod_1.z.string().min(1).max(200).optional(),
|
|
emailBody: zod_1.z.string().min(1).max(10000).optional(),
|
|
callToAction: zod_1.z.string().max(500).nullable().optional(),
|
|
status: zod_1.z.nativeEnum(client_1.CampaignStatus).optional(),
|
|
targetGovernmentLevels: zod_1.z.array(zod_1.z.nativeEnum(client_1.GovernmentLevel)).optional(),
|
|
allowSmtpEmail: zod_1.z.boolean().optional(),
|
|
allowMailtoLink: zod_1.z.boolean().optional(),
|
|
collectUserInfo: zod_1.z.boolean().optional(),
|
|
showEmailCount: zod_1.z.boolean().optional(),
|
|
showCallCount: zod_1.z.boolean().optional(),
|
|
allowEmailEditing: zod_1.z.boolean().optional(),
|
|
allowCustomRecipients: zod_1.z.boolean().optional(),
|
|
showResponseWall: zod_1.z.boolean().optional(),
|
|
highlightCampaign: zod_1.z.boolean().optional(),
|
|
coverPhoto: zod_1.z.string().url().max(500).nullable().optional(),
|
|
coverVideoId: zod_1.z.number().int().positive().nullable().optional(),
|
|
});
|
|
exports.listCampaignsSchema = zod_1.z.object({
|
|
page: zod_1.z.coerce.number().int().positive().default(1),
|
|
limit: zod_1.z.coerce.number().int().positive().max(100).default(20),
|
|
search: zod_1.z.string().optional(),
|
|
status: zod_1.z.nativeEnum(client_1.CampaignStatus).optional(),
|
|
});
|
|
exports.campaignIdSchema = zod_1.z.object({
|
|
id: zod_1.z.string().min(1),
|
|
});
|
|
// User-submitted campaign (restricted fields)
|
|
exports.createUserCampaignSchema = zod_1.z.object({
|
|
title: zod_1.z.string().min(3, 'Title must be at least 3 characters').max(200),
|
|
description: zod_1.z.string().max(2000).optional(),
|
|
emailSubject: zod_1.z.string().min(3, 'Email subject is required').max(200),
|
|
emailBody: zod_1.z.string().min(10, 'Email body must be at least 10 characters').max(5000),
|
|
callToAction: zod_1.z.string().max(500).optional(),
|
|
targetGovernmentLevels: zod_1.z.array(zod_1.z.nativeEnum(client_1.GovernmentLevel)).min(1, 'Select at least one government level'),
|
|
});
|
|
// Update own user campaign (same restricted fields)
|
|
exports.updateUserCampaignSchema = exports.createUserCampaignSchema.partial();
|
|
// Admin moderation action
|
|
exports.moderateCampaignSchema = zod_1.z.object({
|
|
action: zod_1.z.enum(['approve', 'reject', 'request_changes']),
|
|
reason: zod_1.z.string().max(2000).optional(),
|
|
notes: zod_1.z.string().max(2000).optional(),
|
|
});
|
|
// Moderation queue filters
|
|
exports.listModerationQueueSchema = zod_1.z.object({
|
|
page: zod_1.z.coerce.number().int().positive().default(1),
|
|
limit: zod_1.z.coerce.number().int().positive().max(100).default(20),
|
|
search: zod_1.z.string().optional(),
|
|
moderationStatus: zod_1.z.nativeEnum(client_1.CampaignModerationStatus).optional(),
|
|
});
|
|
//# sourceMappingURL=campaigns.schemas.js.map
|