import { z } from "zod"; export const ArchiveCreateSchema = z.object({ name: z.string().min(1).max(100), description: z.string().max(500).optional(), }); export const ArchiveUpdateSchema = z.object({ name: z.string().min(1).max(100).optional(), description: z.string().max(500).optional(), }); export type Archive = { id: string; name: string; description: string | null; userId: string; createdAt: Date; updatedAt: Date; }; export type ArchiveItem = { id: string; archiveId: string; itemId: string; userId: string; addedAt: Date; }; export type ArchiveWithItemCount = Archive & { itemCount: number; }; export type ArchiveRepository = { createArchive( archive: Omit, ): Promise; getArchivesByUserId(userId: string): Promise; getArchiveById(id: string): Promise; updateArchive( id: string, archive: Partial>, ): Promise; deleteArchive(id: string): Promise; addItemToArchive( archiveId: string, itemId: string, userId: string, ): Promise; removeItemFromArchive(archiveId: string, itemId: string): Promise; getArchiveItems(archiveId: string): Promise; getItemArchives(itemId: string, userId: string): Promise; };