import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { UserIncludeObjectSchema as UserIncludeObjectSchema } from './objects/UserInclude.schema';
import { UserOrderByWithRelationInputObjectSchema as UserOrderByWithRelationInputObjectSchema } from './objects/UserOrderByWithRelationInput.schema';
import { UserWhereInputObjectSchema as UserWhereInputObjectSchema } from './objects/UserWhereInput.schema';
import { UserWhereUniqueInputObjectSchema as UserWhereUniqueInputObjectSchema } from './objects/UserWhereUniqueInput.schema';
import { UserScalarFieldEnumSchema } from './enums/UserScalarFieldEnum.schema';

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

export const UserFindManySelectSchema: z.ZodType<Prisma.UserSelect> = z.object({
    id: z.boolean().optional(),
    username: z.boolean().optional(),
    password: z.boolean().optional(),
    autoBackupEnabled: z.boolean().optional(),
    autoBackupHour: z.boolean().optional(),
    usbBackupEnabled: z.boolean().optional(),
    usbBackupHour: z.boolean().optional(),
    autoMhCheckEnabled: z.boolean().optional(),
    autoMhCheckDayOfWeek: z.boolean().optional(),
    autoMhCheckHour: z.boolean().optional(),
    patients: z.boolean().optional(),
    appointments: z.boolean().optional(),
    staff: z.boolean().optional(),
    npiProviders: z.boolean().optional(),
    claims: z.boolean().optional(),
    insuranceCredentials: z.boolean().optional(),
    shoppingVendors: z.boolean().optional(),
    updatedPayments: z.boolean().optional(),
    backups: z.boolean().optional(),
    backupDestinations: z.boolean().optional(),
    notifications: z.boolean().optional(),
    cloudFolders: z.boolean().optional(),
    cloudFiles: z.boolean().optional(),
    communications: z.boolean().optional(),
    twilioSettings: z.boolean().optional(),
    aiSettings: z.boolean().optional(),
    officeHours: z.boolean().optional(),
    officeContact: z.boolean().optional(),
    procedureTimeslot: z.boolean().optional(),
    insuranceContacts: z.boolean().optional(),
    patientConversations: z.boolean().optional(),
    labRxTemplates: z.boolean().optional(),
    seleniumSettings: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.UserSelect>;

export const UserFindManySelectZodSchema = z.object({
    id: z.boolean().optional(),
    username: z.boolean().optional(),
    password: z.boolean().optional(),
    autoBackupEnabled: z.boolean().optional(),
    autoBackupHour: z.boolean().optional(),
    usbBackupEnabled: z.boolean().optional(),
    usbBackupHour: z.boolean().optional(),
    autoMhCheckEnabled: z.boolean().optional(),
    autoMhCheckDayOfWeek: z.boolean().optional(),
    autoMhCheckHour: z.boolean().optional(),
    patients: z.boolean().optional(),
    appointments: z.boolean().optional(),
    staff: z.boolean().optional(),
    npiProviders: z.boolean().optional(),
    claims: z.boolean().optional(),
    insuranceCredentials: z.boolean().optional(),
    shoppingVendors: z.boolean().optional(),
    updatedPayments: z.boolean().optional(),
    backups: z.boolean().optional(),
    backupDestinations: z.boolean().optional(),
    notifications: z.boolean().optional(),
    cloudFolders: z.boolean().optional(),
    cloudFiles: z.boolean().optional(),
    communications: z.boolean().optional(),
    twilioSettings: z.boolean().optional(),
    aiSettings: z.boolean().optional(),
    officeHours: z.boolean().optional(),
    officeContact: z.boolean().optional(),
    procedureTimeslot: z.boolean().optional(),
    insuranceContacts: z.boolean().optional(),
    patientConversations: z.boolean().optional(),
    labRxTemplates: z.boolean().optional(),
    seleniumSettings: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict();

export const UserFindManySchema: z.ZodType<Prisma.UserFindManyArgs> = z.object({ select: UserFindManySelectSchema.optional(), include: z.lazy(() => UserIncludeObjectSchema.optional()), orderBy: z.union([UserOrderByWithRelationInputObjectSchema, UserOrderByWithRelationInputObjectSchema.array()]).optional(), where: UserWhereInputObjectSchema.optional(), cursor: UserWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([UserScalarFieldEnumSchema, UserScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.UserFindManyArgs>;

export const UserFindManyZodSchema = z.object({ select: UserFindManySelectSchema.optional(), include: z.lazy(() => UserIncludeObjectSchema.optional()), orderBy: z.union([UserOrderByWithRelationInputObjectSchema, UserOrderByWithRelationInputObjectSchema.array()]).optional(), where: UserWhereInputObjectSchema.optional(), cursor: UserWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([UserScalarFieldEnumSchema, UserScalarFieldEnumSchema.array()]).optional() }).strict();