UNPKG

@tmlmobilidade/types

Version:
26 lines (25 loc) 1.02 kB
/* * */ import { DocumentSchema } from './_common/document.js'; import { z } from 'zod'; export const NotificationSchema = DocumentSchema .omit({ is_locked: true }) .extend({ is_read: z.boolean(), payload: z.object({ body: z.string().min(1), href: z.string().url().optional(), icon: z.string().optional(), title: z.string().min(1), }), priority: z.enum(['high', 'normal', 'low']).default('normal'), scope: z.string().min(1), // e.g., 'agencies', 'alerts', 'auth' topic: z.string().min(1), // e.g., 'new_alert', 'plan_update' user_id: z.string().optional(), // Id of the user this notification belongs to }); /* * */ export const CreateNotificationSchema = NotificationSchema.omit({ _id: true, created_at: true, updated_at: true }); export const UpdateNotificationSchema = CreateNotificationSchema.omit({ created_by: true }).partial(); /* * */ export const NotificationPermissionSchema = z.object({ send_mail: z.boolean().default(false).nullish(), });