import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { PatientDocumentIncludeObjectSchema as PatientDocumentIncludeObjectSchema } from './objects/PatientDocumentInclude.schema';
import { PatientDocumentOrderByWithRelationInputObjectSchema as PatientDocumentOrderByWithRelationInputObjectSchema } from './objects/PatientDocumentOrderByWithRelationInput.schema';
import { PatientDocumentWhereInputObjectSchema as PatientDocumentWhereInputObjectSchema } from './objects/PatientDocumentWhereInput.schema';
import { PatientDocumentWhereUniqueInputObjectSchema as PatientDocumentWhereUniqueInputObjectSchema } from './objects/PatientDocumentWhereUniqueInput.schema';
import { PatientDocumentScalarFieldEnumSchema } from './enums/PatientDocumentScalarFieldEnum.schema';

// Select schema needs to be in file to prevent circular imports
//------------------------------------------------------

export const PatientDocumentFindFirstOrThrowSelectSchema: z.ZodType<Prisma.PatientDocumentSelect> = z.object({
    id: z.boolean().optional(),
    patientId: z.boolean().optional(),
    filename: z.boolean().optional(),
    originalName: z.boolean().optional(),
    mimeType: z.boolean().optional(),
    fileSize: z.boolean().optional(),
    filePath: z.boolean().optional(),
    uploadedAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    patient: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.PatientDocumentSelect>;

export const PatientDocumentFindFirstOrThrowSelectZodSchema = z.object({
    id: z.boolean().optional(),
    patientId: z.boolean().optional(),
    filename: z.boolean().optional(),
    originalName: z.boolean().optional(),
    mimeType: z.boolean().optional(),
    fileSize: z.boolean().optional(),
    filePath: z.boolean().optional(),
    uploadedAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    patient: z.boolean().optional()
  }).strict();

export const PatientDocumentFindFirstOrThrowSchema: z.ZodType<Prisma.PatientDocumentFindFirstOrThrowArgs> = z.object({ select: PatientDocumentFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => PatientDocumentIncludeObjectSchema.optional()), orderBy: z.union([PatientDocumentOrderByWithRelationInputObjectSchema, PatientDocumentOrderByWithRelationInputObjectSchema.array()]).optional(), where: PatientDocumentWhereInputObjectSchema.optional(), cursor: PatientDocumentWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([PatientDocumentScalarFieldEnumSchema, PatientDocumentScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.PatientDocumentFindFirstOrThrowArgs>;

export const PatientDocumentFindFirstOrThrowZodSchema = z.object({ select: PatientDocumentFindFirstOrThrowSelectSchema.optional(), include: z.lazy(() => PatientDocumentIncludeObjectSchema.optional()), orderBy: z.union([PatientDocumentOrderByWithRelationInputObjectSchema, PatientDocumentOrderByWithRelationInputObjectSchema.array()]).optional(), where: PatientDocumentWhereInputObjectSchema.optional(), cursor: PatientDocumentWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([PatientDocumentScalarFieldEnumSchema, PatientDocumentScalarFieldEnumSchema.array()]).optional() }).strict();