import z from 'zod'; import { authedServiceRequest, serviceRequest, serviceResponse, } from '../interfaces/common'; import { metadata } from '../interfaces/Metadata'; import { File } from './FileService'; export const sitemap = z.object({ _id: z.string(), organizationId: z.string(), sitemapFileId: z.string(), sitemapUrl: z.string(), urls: z.array(z.string()), meta: metadata, }); export type Sitemap = z.infer; export type SitemapResolved = Sitemap & { file: File; }; export interface SitemapService { create(request: CreateSitemapRequest): Promise; get(request: GetSitemapRequest): Promise; list(request: ListSitemapsRequest): Promise; } /** ****************************************************************************** * Create Sitemap ******************************************************************************* */ export const createSitemapParams = z.object({ urls: z.array(z.string()), }); export const createSitemapRequest = authedServiceRequest.merge( z.object({ params: createSitemapParams, }), ); export const createSitemapResponse = serviceResponse.merge( z.object({ sitemap: sitemap.optional(), }), ); export type CreateSitemapParams = z.infer; export type CreateSitemapRequest = z.infer; export type CreateSitemapResponse = z.infer; /** ****************************************************************************** * Get Sitemap ******************************************************************************* */ export const getSitemapParams = z.object({ sitemapId: z.string(), }); export const getSitemapRequest = serviceRequest.merge( z.object({ params: getSitemapParams, }), ); export const getSitemapResponse = serviceResponse.merge( z.object({ sitemap: sitemap.optional(), }), ); export type GetSitemapParams = z.infer; export type GetSitemapRequest = z.infer; export type GetSitemapResponse = z.infer; /** ****************************************************************************** * List Sitemaps ******************************************************************************* */ export const listSitemapsParams = z.object({}); export const listSitemapsRequest = authedServiceRequest.merge( z.object({ params: listSitemapsParams, }), ); export const listSitemapsResponse = serviceResponse.merge( z.object({ sitemaps: z.array(sitemap).optional(), }), ); export type ListSitemapsParams = z.infer; export type ListSitemapsRequest = z.infer; export type ListSitemapsResponse = z.infer;