import type { Prisma } from '../../generated/prisma';
import * as z from 'zod';
import { CloudFileIncludeObjectSchema as CloudFileIncludeObjectSchema } from './objects/CloudFileInclude.schema';
import { CloudFileOrderByWithRelationInputObjectSchema as CloudFileOrderByWithRelationInputObjectSchema } from './objects/CloudFileOrderByWithRelationInput.schema';
import { CloudFileWhereInputObjectSchema as CloudFileWhereInputObjectSchema } from './objects/CloudFileWhereInput.schema';
import { CloudFileWhereUniqueInputObjectSchema as CloudFileWhereUniqueInputObjectSchema } from './objects/CloudFileWhereUniqueInput.schema';
import { CloudFileScalarFieldEnumSchema } from './enums/CloudFileScalarFieldEnum.schema';

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

export const CloudFileFindFirstSelectSchema: z.ZodType<Prisma.CloudFileSelect> = z.object({
    id: z.boolean().optional(),
    userId: z.boolean().optional(),
    name: z.boolean().optional(),
    mimeType: z.boolean().optional(),
    fileSize: z.boolean().optional(),
    folderId: z.boolean().optional(),
    isComplete: z.boolean().optional(),
    totalChunks: z.boolean().optional(),
    diskPath: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    user: z.boolean().optional(),
    folder: z.boolean().optional(),
    chunks: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict() as unknown as z.ZodType<Prisma.CloudFileSelect>;

export const CloudFileFindFirstSelectZodSchema = z.object({
    id: z.boolean().optional(),
    userId: z.boolean().optional(),
    name: z.boolean().optional(),
    mimeType: z.boolean().optional(),
    fileSize: z.boolean().optional(),
    folderId: z.boolean().optional(),
    isComplete: z.boolean().optional(),
    totalChunks: z.boolean().optional(),
    diskPath: z.boolean().optional(),
    createdAt: z.boolean().optional(),
    updatedAt: z.boolean().optional(),
    user: z.boolean().optional(),
    folder: z.boolean().optional(),
    chunks: z.boolean().optional(),
    _count: z.boolean().optional()
  }).strict();

export const CloudFileFindFirstSchema: z.ZodType<Prisma.CloudFileFindFirstArgs> = z.object({ select: CloudFileFindFirstSelectSchema.optional(), include: z.lazy(() => CloudFileIncludeObjectSchema.optional()), orderBy: z.union([CloudFileOrderByWithRelationInputObjectSchema, CloudFileOrderByWithRelationInputObjectSchema.array()]).optional(), where: CloudFileWhereInputObjectSchema.optional(), cursor: CloudFileWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([CloudFileScalarFieldEnumSchema, CloudFileScalarFieldEnumSchema.array()]).optional() }).strict() as unknown as z.ZodType<Prisma.CloudFileFindFirstArgs>;

export const CloudFileFindFirstZodSchema = z.object({ select: CloudFileFindFirstSelectSchema.optional(), include: z.lazy(() => CloudFileIncludeObjectSchema.optional()), orderBy: z.union([CloudFileOrderByWithRelationInputObjectSchema, CloudFileOrderByWithRelationInputObjectSchema.array()]).optional(), where: CloudFileWhereInputObjectSchema.optional(), cursor: CloudFileWhereUniqueInputObjectSchema.optional(), take: z.number().optional(), skip: z.number().optional(), distinct: z.union([CloudFileScalarFieldEnumSchema, CloudFileScalarFieldEnumSchema.array()]).optional() }).strict();