import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { AppointmentFileIncludeObjectSchema as AppointmentFileIncludeObjectSchema } from './objects/AppointmentFileInclude.schema';
import { AppointmentFileOrderByWithRelationInputObjectSchema as AppointmentFileOrderByWithRelationInputObjectSchema } from './objects/AppointmentFileOrderByWithRelationInput.schema';
import { AppointmentFileWhereInputObjectSchema as AppointmentFileWhereInputObjectSchema } from './objects/AppointmentFileWhereInput.schema';
import { AppointmentFileWhereUniqueInputObjectSchema as AppointmentFileWhereUniqueInputObjectSchema } from './objects/AppointmentFileWhereUniqueInput.schema';
import { AppointmentFileScalarFieldEnumSchema } from './enums/AppointmentFileScalarFieldEnum.schema';

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

export const AppointmentFileFindFirstSelectSchema: z.ZodType<Prisma.AppointmentFileSelect> = z.object({
    id: z.boolean().optional(),
    appointmentId: z.boolean().optional(),
    filename: z.boolean().optional(),
    mimeType: z.boolean().optional(),
    filePath: z.boolean().optional(),
    appointment: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.AppointmentFileSelect>;

export const AppointmentFileFindFirstSelectZodSchema = z.object({
    id: z.boolean().optional(),
    appointmentId: z.boolean().optional(),
    filename: z.boolean().optional(),
    mimeType: z.boolean().optional(),
    filePath: z.boolean().optional(),
    appointment: z.boolean().optional()
  }).strict();

export const AppointmentFileFindFirstSchema: z.ZodType<Prisma.AppointmentFileFindFirstArgs> = z.object({ select: AppointmentFileFindFirstSelectSchema.optional(), include: z.lazy(() => AppointmentFileIncludeObjectSchema.optional()), orderBy: z.union([AppointmentFileOrderByWithRelationInputObjectSchema, AppointmentFileOrderByWithRelationInputObjectSchema.array()]).optional(), where: AppointmentFileWhereInputObjectSchema.optional(), cursor: AppointmentFileWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([AppointmentFileScalarFieldEnumSchema, AppointmentFileScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.AppointmentFileFindFirstArgs>;

export const AppointmentFileFindFirstZodSchema = z.object({ select: AppointmentFileFindFirstSelectSchema.optional(), include: z.lazy(() => AppointmentFileIncludeObjectSchema.optional()), orderBy: z.union([AppointmentFileOrderByWithRelationInputObjectSchema, AppointmentFileOrderByWithRelationInputObjectSchema.array()]).optional(), where: AppointmentFileWhereInputObjectSchema.optional(), cursor: AppointmentFileWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([AppointmentFileScalarFieldEnumSchema, AppointmentFileScalarFieldEnumSchema.array()]).optional() }).strict();