Refine workspaces and event publishing; harden uploads and email delivery
This commit is contained in:
@@ -91,11 +91,35 @@ export const createEventInputSchema = z.object({
|
||||
inviteCode: z.string().trim().max(80).optional(),
|
||||
});
|
||||
|
||||
export const publishingPolicySchema = z.enum(["automatic", "approved", "never"]);
|
||||
export type EmailPayload = { to: string; from: string; subject: string; html: string; text: string; referenceId: string; attachments?: { filename: string; content: string; contentId: string }[] };
|
||||
export const checkEventSlugInputSchema = z.object({ eventId: z.string().uuid(), slug: eventSlugSchema });
|
||||
export const generateEventSlugInputSchema = z.object({ eventId: z.string().uuid(), title: z.string().trim().min(1).max(120) });
|
||||
export type PublishingPolicy = z.infer<typeof publishingPolicySchema>;
|
||||
export const moderateNoteInputSchema = z.object({ eventId: z.string().uuid(), guestId: z.string().uuid(), approved: z.boolean() });
|
||||
|
||||
export const updateEventInputSchema = z.object({
|
||||
publishAt: z.coerce.date().nullable().optional(),
|
||||
submissionsOpenAt: z.coerce.date().nullable().optional(),
|
||||
submissionsCloseAt: z.coerce.date().nullable().optional(),
|
||||
galleryVisibleAt: z.coerce.date().nullable().optional(),
|
||||
notesVisibleAt: z.coerce.date().nullable().optional(),
|
||||
notesPolicy: publishingPolicySchema.optional(),
|
||||
galleryPolicy: publishingPolicySchema.optional(),
|
||||
showPhotoStats: z.boolean().optional(),
|
||||
showSubmitterStats: z.boolean().optional(),
|
||||
showNoteStats: z.boolean().optional(),
|
||||
eventId: z.string().uuid(),
|
||||
title: z.string().trim().min(1).max(120).optional(),
|
||||
slug: eventSlugSchema.optional(),
|
||||
description: z.string().trim().max(2000).nullable().optional(),
|
||||
location: z.string().trim().max(300).nullable().optional(),
|
||||
locationCoordinates: z.object({
|
||||
latitude: z.number().min(-90).max(90),
|
||||
longitude: z.number().min(-180).max(180),
|
||||
}).nullable().optional(),
|
||||
bannerPhotoId: z.string().uuid().nullable().optional(),
|
||||
customBannerId: z.string().uuid().nullable().optional(),
|
||||
startsAt: z.coerce.date().nullable().optional(),
|
||||
endsAt: z.coerce.date().nullable().optional(),
|
||||
status: eventStatusSchema.optional(),
|
||||
@@ -103,6 +127,18 @@ export const updateEventInputSchema = z.object({
|
||||
uploadEnabled: z.boolean().optional(),
|
||||
});
|
||||
|
||||
export const locationSearchInputSchema = z.object({
|
||||
eventId: z.string().uuid(),
|
||||
query: z.string().trim().min(3).max(300),
|
||||
});
|
||||
|
||||
export const locationSuggestionSchema = z.object({
|
||||
address: z.string(),
|
||||
latitude: z.number().min(-90).max(90),
|
||||
longitude: z.number().min(-180).max(180),
|
||||
});
|
||||
export type LocationSuggestion = z.infer<typeof locationSuggestionSchema>;
|
||||
|
||||
export const ensureGuestInputSchema = z.object({
|
||||
eventSlug: eventSlugSchema,
|
||||
displayName: contributorNameSchema,
|
||||
@@ -136,6 +172,16 @@ export const completePhotoInputSchema = z.object({
|
||||
photoId: z.string().uuid(),
|
||||
});
|
||||
|
||||
export const createBannerInputSchema = z.object({
|
||||
eventId: z.string().uuid(),
|
||||
contentType: allowedImageTypeSchema,
|
||||
byteSize: z.number().int().positive().max(MAX_PHOTO_BYTES),
|
||||
});
|
||||
export const bannerInputSchema = z.object({
|
||||
eventId: z.string().uuid(),
|
||||
bannerId: z.string().uuid(),
|
||||
});
|
||||
|
||||
export const moderatePhotoInputSchema = z.object({
|
||||
photoId: z.string().uuid(),
|
||||
visibility: photoVisibilitySchema,
|
||||
|
||||
Reference in New Issue
Block a user