(query: string, ...values: any[]): Prisma.PrismaPromise;
+
+ /**
+ * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.
+ * @example
+ * ```
+ * const [george, bob, alice] = await prisma.$transaction([
+ * prisma.user.create({ data: { name: 'George' } }),
+ * prisma.user.create({ data: { name: 'Bob' } }),
+ * prisma.user.create({ data: { name: 'Alice' } }),
+ * ])
+ * ```
+ *
+ * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions).
+ */
+ $transaction[]>(
+ arg: [...P],
+ options?: { isolationLevel?: Prisma.TransactionIsolationLevel },
+ ): Promise>;
+
+ $transaction(
+ fn: (prisma: Omit) => Promise,
+ options?: { maxWait?: number; timeout?: number; isolationLevel?: Prisma.TransactionIsolationLevel },
+ ): Promise;
+
+ /**
+ * `prisma.user`: Exposes CRUD operations for the **User** model.
+ * Example usage:
+ * ```ts
+ * // Fetch zero or more Users
+ * const users = await prisma.user.findMany()
+ * ```
+ */
+ get user(): Prisma.UserDelegate;
+
+ /**
+ * `prisma.post`: Exposes CRUD operations for the **Post** model.
+ * Example usage:
+ * ```ts
+ * // Fetch zero or more Posts
+ * const posts = await prisma.post.findMany()
+ * ```
+ */
+ get post(): Prisma.PostDelegate;
+}
+
+export namespace Prisma {
+ export import DMMF = runtime.DMMF;
+
+ export type PrismaPromise = runtime.Types.Public.PrismaPromise;
+
+ /**
+ * Prisma Errors
+ */
+ export import PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError;
+ export import PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError;
+ export import PrismaClientRustPanicError = runtime.PrismaClientRustPanicError;
+ export import PrismaClientInitializationError = runtime.PrismaClientInitializationError;
+ export import PrismaClientValidationError = runtime.PrismaClientValidationError;
+ export import NotFoundError = runtime.NotFoundError;
+
+ /**
+ * Re-export of sql-template-tag
+ */
+ export import sql = runtime.sqltag;
+ export import empty = runtime.empty;
+ export import join = runtime.join;
+ export import raw = runtime.raw;
+ export import Sql = runtime.Sql;
+
+ /**
+ * Decimal.js
+ */
+ export import Decimal = runtime.Decimal;
+
+ export type DecimalJsLike = runtime.DecimalJsLike;
+
+ /**
+ * Metrics
+ */
+ export type Metrics = runtime.Metrics;
+ export type Metric = runtime.Metric;
+ export type MetricHistogram = runtime.MetricHistogram;
+ export type MetricHistogramBucket = runtime.MetricHistogramBucket;
+
+ /**
+ * Prisma Client JS version: 4.15.0
+ * Query Engine version: 8fbc245156db7124f997f4cecdd8d1219e360944
+ */
+ export type PrismaVersion = {
+ client: string;
+ };
+
+ export const prismaVersion: PrismaVersion;
+
+ /**
+ * Utility Types
+ */
+
+ /**
+ * From https://github.com/sindresorhus/type-fest/
+ * Matches a JSON object.
+ * This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from.
+ */
+ export type JsonObject = { [Key in string]?: JsonValue };
+
+ /**
+ * From https://github.com/sindresorhus/type-fest/
+ * Matches a JSON array.
+ */
+ export interface JsonArray extends Array {}
+
+ /**
+ * From https://github.com/sindresorhus/type-fest/
+ * Matches any valid JSON value.
+ */
+ export type JsonValue = string | number | boolean | JsonObject | JsonArray | null;
+
+ /**
+ * Matches a JSON object.
+ * Unlike `JsonObject`, this type allows undefined and read-only properties.
+ */
+ export type InputJsonObject = { readonly [Key in string]?: InputJsonValue | null };
+
+ /**
+ * Matches a JSON array.
+ * Unlike `JsonArray`, readonly arrays are assignable to this type.
+ */
+ export interface InputJsonArray extends ReadonlyArray {}
+
+ /**
+ * Matches any valid value that can be used as an input for operations like
+ * create and update as the value of a JSON field. Unlike `JsonValue`, this
+ * type allows read-only arrays and read-only object properties and disallows
+ * `null` at the top level.
+ *
+ * `null` cannot be used as the value of a JSON field because its meaning
+ * would be ambiguous. Use `Prisma.JsonNull` to store the JSON null value or
+ * `Prisma.DbNull` to clear the JSON value and set the field to the database
+ * NULL value instead.
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-by-null-values
+ */
+ export type InputJsonValue = string | number | boolean | InputJsonObject | InputJsonArray;
+
+ /**
+ * Types of the values used to represent different kinds of `null` values when working with JSON fields.
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
+ */
+ namespace NullTypes {
+ /**
+ * Type of `Prisma.DbNull`.
+ *
+ * You cannot use other instances of this class. Please use the `Prisma.DbNull` value.
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
+ */
+ class DbNull {
+ private DbNull: never;
+ private constructor();
+ }
+
+ /**
+ * Type of `Prisma.JsonNull`.
+ *
+ * You cannot use other instances of this class. Please use the `Prisma.JsonNull` value.
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
+ */
+ class JsonNull {
+ private JsonNull: never;
+ private constructor();
+ }
+
+ /**
+ * Type of `Prisma.AnyNull`.
+ *
+ * You cannot use other instances of this class. Please use the `Prisma.AnyNull` value.
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
+ */
+ class AnyNull {
+ private AnyNull: never;
+ private constructor();
+ }
+ }
+
+ /**
+ * Helper for filtering JSON entries that have `null` on the database (empty on the db)
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
+ */
+ export const DbNull: NullTypes.DbNull;
+
+ /**
+ * Helper for filtering JSON entries that have JSON `null` values (not empty on the db)
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
+ */
+ export const JsonNull: NullTypes.JsonNull;
+
+ /**
+ * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull`
+ *
+ * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
+ */
+ export const AnyNull: NullTypes.AnyNull;
+
+ type SelectAndInclude = {
+ select: any;
+ include: any;
+ };
+ type HasSelect = {
+ select: any;
+ };
+ type HasInclude = {
+ include: any;
+ };
+ type CheckSelect = T extends SelectAndInclude
+ ? "Please either choose `select` or `include`"
+ : T extends HasSelect
+ ? U
+ : T extends HasInclude
+ ? U
+ : S;
+
+ /**
+ * Get the type of the value, that the Promise holds.
+ */
+ export type PromiseType> = T extends PromiseLike ? U : T;
+
+ /**
+ * Get the return type of a function which returns a Promise.
+ */
+ export type PromiseReturnType Promise> = PromiseType>;
+
+ /**
+ * From T, pick a set of properties whose keys are in the union K
+ */
+ type Prisma__Pick = {
+ [P in K]: T[P];
+ };
+
+ export type Enumerable = T | Array;
+
+ export type RequiredKeys = {
+ [K in keyof T]-?: {} extends Prisma__Pick ? never : K;
+ }[keyof T];
+
+ export type TruthyKeys = keyof {
+ [K in keyof T as T[K] extends false | undefined | null ? never : K]: K;
+ };
+
+ export type TrueKeys = TruthyKeys>>;
+
+ /**
+ * Subset
+ * @desc From `T` pick properties that exist in `U`. Simple version of Intersection
+ */
+ export type Subset = {
+ [key in keyof T]: key extends keyof U ? T[key] : never;
+ };
+
+ /**
+ * SelectSubset
+ * @desc From `T` pick properties that exist in `U`. Simple version of Intersection.
+ * Additionally, it validates, if both select and include are present. If the case, it errors.
+ */
+ export type SelectSubset = {
+ [key in keyof T]: key extends keyof U ? T[key] : never;
+ } & (T extends SelectAndInclude ? "Please either choose `select` or `include`." : {});
+
+ /**
+ * Subset + Intersection
+ * @desc From `T` pick properties that exist in `U` and intersect `K`
+ */
+ export type SubsetIntersection = {
+ [key in keyof T]: key extends keyof U ? T[key] : never;
+ } & K;
+
+ type Without = { [P in Exclude]?: never };
+
+ /**
+ * XOR is needed to have a real mutually exclusive union type
+ * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types
+ */
+ type XOR = T extends object ? (U extends object ? (Without & U) | (Without & T) : U) : T;
+
+ /**
+ * Is T a Record?
+ */
+ type IsObject = T extends Array
+ ? False
+ : T extends Date
+ ? False
+ : T extends Uint8Array
+ ? False
+ : T extends BigInt
+ ? False
+ : T extends object
+ ? True
+ : False;
+
+ /**
+ * If it's T[], return T
+ */
+ export type UnEnumerate = T extends Array ? U : T;
+
+ /**
+ * From ts-toolbelt
+ */
+
+ type __Either = Omit &
+ {
+ // Merge all but K
+ [P in K]: Prisma__Pick; // With K possibilities
+ }[K];
+
+ type EitherStrict = Strict<__Either>;
+
+ type EitherLoose = ComputeRaw<__Either>;
+
+ type _Either = {
+ 1: EitherStrict;
+ 0: EitherLoose;
+ }[strict];
+
+ type Either = O extends unknown
+ ? _Either
+ : never;
+
+ export type Union = any;
+
+ type PatchUndefined = {
+ [K in keyof O]: O[K] extends undefined ? At : O[K];
+ } & {};
+
+ /** Helper Types for "Merge" **/
+ export type IntersectOf = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void
+ ? I
+ : never;
+
+ export type Overwrite = {
+ [K in keyof O]: K extends keyof O1 ? O1[K] : O[K];
+ } & {};
+
+ type _Merge = IntersectOf<
+ Overwrite<
+ U,
+ {
+ [K in keyof U]-?: At;
+ }
+ >
+ >;
+
+ type Key = string | number | symbol;
+ type AtBasic = K extends keyof O ? O[K] : never;
+ type AtStrict = O[K & keyof O];
+ type AtLoose = O extends unknown ? AtStrict : never;
+ export type At = {
+ 1: AtStrict;
+ 0: AtLoose;
+ }[strict];
+
+ export type ComputeRaw = A extends Function
+ ? A
+ : {
+ [K in keyof A]: A[K];
+ } & {};
+
+ export type OptionalFlat = {
+ [K in keyof O]?: O[K];
+ } & {};
+
+ type _Record = {
+ [P in K]: T;
+ };
+
+ // cause typescript not to expand types and preserve names
+ type NoExpand = T extends unknown ? T : never;
+
+ // this type assumes the passed object is entirely optional
+ type AtLeast = NoExpand<
+ O extends unknown
+ ? (K extends keyof O ? { [P in K]: O[P] } & O : O) | ({ [P in keyof O as P extends K ? K : never]-?: O[P] } & O)
+ : never
+ >;
+
+ type _Strict = U extends unknown ? U & OptionalFlat<_Record, keyof U>, never>> : never;
+
+ export type Strict = ComputeRaw<_Strict>;
+ /** End Helper Types for "Merge" **/
+
+ export type Merge = ComputeRaw<_Merge>>;
+
+ /**
+ A [[Boolean]]
+ */
+ export type Boolean = True | False;
+
+ // /**
+ // 1
+ // */
+ export type True = 1;
+
+ /**
+ 0
+ */
+ export type False = 0;
+
+ export type Not = {
+ 0: 1;
+ 1: 0;
+ }[B];
+
+ export type Extends = [A1] extends [never]
+ ? 0 // anything `never` is false
+ : A1 extends A2
+ ? 1
+ : 0;
+
+ export type Has = Not, U1>>;
+
+ export type Or = {
+ 0: {
+ 0: 0;
+ 1: 1;
+ };
+ 1: {
+ 0: 1;
+ 1: 1;
+ };
+ }[B1][B2];
+
+ export type Keys = U extends unknown ? keyof U : never;
+
+ type Cast = A extends B ? A : B;
+
+ export const type: unique symbol;
+
+ export function validator(): (select: runtime.Types.Utils.LegacyExact) => S;
+
+ /**
+ * Used by group by
+ */
+
+ export type GetScalarType = O extends object
+ ? {
+ [P in keyof T]: P extends keyof O ? O[P] : never;
+ }
+ : never;
+
+ type FieldPaths> = IsObject extends True ? U : T;
+
+ type GetHavingFields = {
+ [K in keyof T]: Or, Extends<"AND", K>>, Extends<"NOT", K>> extends True
+ ? // infer is only needed to not hit TS limit
+ // based on the brilliant idea of Pierre-Antoine Mills
+ // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437
+ T[K] extends infer TK
+ ? GetHavingFields extends object ? Merge> : never>
+ : never
+ : {} extends FieldPaths
+ ? never
+ : K;
+ }[keyof T];
+
+ /**
+ * Convert tuple to union
+ */
+ type _TupleToUnion = T extends (infer E)[] ? E : never;
+ type TupleToUnion = _TupleToUnion;
+ type MaybeTupleToUnion = T extends any[] ? TupleToUnion : T;
+
+ /**
+ * Like `Pick`, but with an array
+ */
+ type PickArray> = Prisma__Pick>;
+
+ /**
+ * Exclude all keys with underscores
+ */
+ type ExcludeUnderscoreKeys = T extends `_${string}` ? never : T;
+
+ export type FieldRef = runtime.FieldRef;
+
+ type FieldRefInputType = Model extends never ? never : FieldRef;
+
+ export const ModelName: {
+ User: "User";
+ Post: "Post";
+ };
+
+ export type ModelName = (typeof ModelName)[keyof typeof ModelName];
+
+ export type Datasources = {
+ db?: Datasource;
+ };
+
+ export type DefaultPrismaClient = PrismaClient;
+ export type RejectOnNotFound = boolean | ((error: Error) => Error);
+ export type RejectPerModel = { [P in ModelName]?: RejectOnNotFound };
+ export type RejectPerOperation = { [P in "findUnique" | "findFirst"]?: RejectPerModel | RejectOnNotFound };
+ type IsReject = T extends true ? True : T extends (err: Error) => Error ? True : False;
+ export type HasReject<
+ GlobalRejectSettings extends Prisma.PrismaClientOptions["rejectOnNotFound"],
+ LocalRejectSettings,
+ Action extends PrismaAction,
+ Model extends ModelName,
+ > = LocalRejectSettings extends RejectOnNotFound
+ ? IsReject
+ : GlobalRejectSettings extends RejectPerOperation
+ ? Action extends keyof GlobalRejectSettings
+ ? GlobalRejectSettings[Action] extends RejectOnNotFound
+ ? IsReject
+ : GlobalRejectSettings[Action] extends RejectPerModel
+ ? Model extends keyof GlobalRejectSettings[Action]
+ ? IsReject
+ : False
+ : False
+ : False
+ : IsReject;
+ export type ErrorFormat = "pretty" | "colorless" | "minimal";
+
+ export interface PrismaClientOptions {
+ /**
+ * Configure findUnique/findFirst to throw an error if the query returns null.
+ * @deprecated since 4.0.0. Use `findUniqueOrThrow`/`findFirstOrThrow` methods instead.
+ * @example
+ * ```
+ * // Reject on both findUnique/findFirst
+ * rejectOnNotFound: true
+ * // Reject only on findFirst with a custom error
+ * rejectOnNotFound: { findFirst: (err) => new Error("Custom Error")}
+ * // Reject on user.findUnique with a custom error
+ * rejectOnNotFound: { findUnique: {User: (err) => new Error("User not found")}}
+ * ```
+ */
+ rejectOnNotFound?: RejectOnNotFound | RejectPerOperation;
+ /**
+ * Overwrites the datasource url from your schema.prisma file
+ */
+ datasources?: Datasources;
+
+ /**
+ * @default "colorless"
+ */
+ errorFormat?: ErrorFormat;
+
+ /**
+ * @example
+ * ```
+ * // Defaults to stdout
+ * log: ['query', 'info', 'warn', 'error']
+ *
+ * // Emit as events
+ * log: [
+ * { emit: 'stdout', level: 'query' },
+ * { emit: 'stdout', level: 'info' },
+ * { emit: 'stdout', level: 'warn' }
+ * { emit: 'stdout', level: 'error' }
+ * ]
+ * ```
+ * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/logging#the-log-option).
+ */
+ log?: Array;
+ }
+
+ /* Types for Logging */
+ export type LogLevel = "info" | "query" | "warn" | "error";
+ export type LogDefinition = {
+ level: LogLevel;
+ emit: "stdout" | "event";
+ };
+
+ export type GetLogType = T extends LogDefinition
+ ? T["emit"] extends "event"
+ ? T["level"]
+ : never
+ : never;
+ export type GetEvents = T extends Array
+ ? GetLogType | GetLogType | GetLogType | GetLogType
+ : never;
+
+ export type QueryEvent = {
+ timestamp: Date;
+ query: string;
+ params: string;
+ duration: number;
+ target: string;
+ };
+
+ export type LogEvent = {
+ timestamp: Date;
+ message: string;
+ target: string;
+ };
+ /* End Types for Logging */
+
+ export type PrismaAction =
+ | "findUnique"
+ | "findMany"
+ | "findFirst"
+ | "create"
+ | "createMany"
+ | "update"
+ | "updateMany"
+ | "upsert"
+ | "delete"
+ | "deleteMany"
+ | "executeRaw"
+ | "queryRaw"
+ | "aggregate"
+ | "count"
+ | "runCommandRaw"
+ | "findRaw";
+
+ /**
+ * These options are being passed into the middleware as "params"
+ */
+ export type MiddlewareParams = {
+ model?: ModelName;
+ action: PrismaAction;
+ args: any;
+ dataPath: string[];
+ runInTransaction: boolean;
+ };
+
+ /**
+ * The `T` type makes sure, that the `return proceed` is not forgotten in the middleware implementation
+ */
+ export type Middleware = (
+ params: MiddlewareParams,
+ next: (params: MiddlewareParams) => Promise,
+ ) => Promise;
+
+ // tested in getLogLevel.test.ts
+ export function getLogLevel(log: Array): LogLevel | undefined;
+
+ /**
+ * `PrismaClient` proxy available in interactive transactions.
+ */
+ export type TransactionClient = Omit<
+ Prisma.DefaultPrismaClient,
+ "$connect" | "$disconnect" | "$on" | "$transaction" | "$use"
+ >;
+
+ export type Datasource = {
+ url?: string;
+ };
+
+ /**
+ * Count Types
+ */
+
+ /**
+ * Count Type UserCountOutputType
+ */
+
+ export type UserCountOutputType = {
+ posts: number;
+ };
+
+ export type UserCountOutputTypeSelect = {
+ posts?: boolean;
+ };
+
+ export type UserCountOutputTypeGetPayload =
+ S extends { select: any; include: any }
+ ? "Please either choose `select` or `include`"
+ : S extends true
+ ? UserCountOutputType
+ : S extends undefined
+ ? never
+ : S extends { include: any } & UserCountOutputTypeArgs
+ ? UserCountOutputType
+ : S extends { select: any } & UserCountOutputTypeArgs
+ ? {
+ [P in TruthyKeys]: P extends keyof UserCountOutputType ? UserCountOutputType[P] : never;
+ }
+ : UserCountOutputType;
+
+ // Custom InputTypes
+
+ /**
+ * UserCountOutputType without action
+ */
+ export type UserCountOutputTypeArgs = {
+ /**
+ * Select specific fields to fetch from the UserCountOutputType
+ */
+ select?: UserCountOutputTypeSelect | null;
+ };
+
+ /**
+ * Models
+ */
+
+ /**
+ * Model User
+ */
+
+ export type AggregateUser = {
+ _count: UserCountAggregateOutputType | null;
+ _avg: UserAvgAggregateOutputType | null;
+ _sum: UserSumAggregateOutputType | null;
+ _min: UserMinAggregateOutputType | null;
+ _max: UserMaxAggregateOutputType | null;
+ };
+
+ export type UserAvgAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ };
+
+ export type UserSumAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ };
+
+ export type UserMinAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ email: string | null;
+ name: string | null;
+ };
+
+ export type UserMaxAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ email: string | null;
+ name: string | null;
+ };
+
+ export type UserCountAggregateOutputType = {
+ id: number;
+ testId: number;
+ email: number;
+ name: number;
+ _all: number;
+ };
+
+ export type UserAvgAggregateInputType = {
+ id?: true;
+ testId?: true;
+ };
+
+ export type UserSumAggregateInputType = {
+ id?: true;
+ testId?: true;
+ };
+
+ export type UserMinAggregateInputType = {
+ id?: true;
+ testId?: true;
+ email?: true;
+ name?: true;
+ };
+
+ export type UserMaxAggregateInputType = {
+ id?: true;
+ testId?: true;
+ email?: true;
+ name?: true;
+ };
+
+ export type UserCountAggregateInputType = {
+ id?: true;
+ testId?: true;
+ email?: true;
+ name?: true;
+ _all?: true;
+ };
+
+ export type UserAggregateArgs = {
+ /**
+ * Filter which User to aggregate.
+ */
+ where?: UserWhereInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
+ *
+ * Determine the order of Users to fetch.
+ */
+ orderBy?: Enumerable;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
+ *
+ * Sets the start position
+ */
+ cursor?: UserWhereUniqueInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Take `±n` Users from the position of the cursor.
+ */
+ take?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Skip the first `n` Users.
+ */
+ skip?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Count returned Users
+ **/
+ _count?: true | UserCountAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to average
+ **/
+ _avg?: UserAvgAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to sum
+ **/
+ _sum?: UserSumAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to find the minimum value
+ **/
+ _min?: UserMinAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to find the maximum value
+ **/
+ _max?: UserMaxAggregateInputType;
+ };
+
+ export type GetUserAggregateType = {
+ [P in keyof T & keyof AggregateUser]: P extends "_count" | "count"
+ ? T[P] extends true
+ ? number
+ : GetScalarType
+ : GetScalarType;
+ };
+
+ export type UserGroupByArgs = {
+ where?: UserWhereInput;
+ orderBy?: Enumerable;
+ by: UserScalarFieldEnum[];
+ having?: UserScalarWhereWithAggregatesInput;
+ take?: number;
+ skip?: number;
+ _count?: UserCountAggregateInputType | true;
+ _avg?: UserAvgAggregateInputType;
+ _sum?: UserSumAggregateInputType;
+ _min?: UserMinAggregateInputType;
+ _max?: UserMaxAggregateInputType;
+ };
+
+ export type UserGroupByOutputType = {
+ id: number;
+ testId: number;
+ email: string;
+ name: string | null;
+ _count: UserCountAggregateOutputType | null;
+ _avg: UserAvgAggregateOutputType | null;
+ _sum: UserSumAggregateOutputType | null;
+ _min: UserMinAggregateOutputType | null;
+ _max: UserMaxAggregateOutputType | null;
+ };
+
+ type GetUserGroupByPayload = Prisma.PrismaPromise<
+ Array<
+ PickArray & {
+ [P in keyof T & keyof UserGroupByOutputType]: P extends "_count"
+ ? T[P] extends boolean
+ ? number
+ : GetScalarType
+ : GetScalarType;
+ }
+ >
+ >;
+
+ export type UserSelect = {
+ id?: boolean;
+ testId?: boolean;
+ email?: boolean;
+ name?: boolean;
+ posts?: boolean | User$postsArgs;
+ _count?: boolean | UserCountOutputTypeArgs;
+ };
+
+ export type UserInclude = {
+ posts?: boolean | User$postsArgs;
+ _count?: boolean | UserCountOutputTypeArgs;
+ };
+
+ export type UserGetPayload = S extends { select: any; include: any }
+ ? "Please either choose `select` or `include`"
+ : S extends true
+ ? User
+ : S extends undefined
+ ? never
+ : S extends { include: any } & (UserArgs | UserFindManyArgs)
+ ? User & {
+ [P in TruthyKeys]: P extends "posts"
+ ? Array>
+ : P extends "_count"
+ ? UserCountOutputTypeGetPayload
+ : never;
+ }
+ : S extends { select: any } & (UserArgs | UserFindManyArgs)
+ ? {
+ [P in TruthyKeys]: P extends "posts"
+ ? Array>
+ : P extends "_count"
+ ? UserCountOutputTypeGetPayload
+ : P extends keyof User
+ ? User[P]
+ : never;
+ }
+ : User;
+
+ type UserCountArgs = Omit & {
+ select?: UserCountAggregateInputType | true;
+ };
+
+ export interface UserDelegate<
+ GlobalRejectSettings extends Prisma.RejectOnNotFound | Prisma.RejectPerOperation | false | undefined,
+ > {
+ /**
+ * Find zero or one User that matches the filter.
+ * @param {UserFindUniqueArgs} args - Arguments to find a User
+ * @example
+ * // Get one User
+ * const user = await prisma.user.findUnique({
+ * where: {
+ * // ... provide filter here
+ * }
+ * })
+ **/
+ findUnique<
+ T extends UserFindUniqueArgs,
+ LocalRejectSettings = T["rejectOnNotFound"] extends RejectOnNotFound ? T["rejectOnNotFound"] : undefined,
+ >(
+ args: SelectSubset,
+ ): HasReject extends True
+ ? Prisma__UserClient>
+ : Prisma__UserClient | null, null>;
+
+ /**
+ * Find one User that matches the filter or throw an error with `error.code='P2025'`
+ * if no matches were found.
+ * @param {UserFindUniqueOrThrowArgs} args - Arguments to find a User
+ * @example
+ * // Get one User
+ * const user = await prisma.user.findUniqueOrThrow({
+ * where: {
+ * // ... provide filter here
+ * }
+ * })
+ **/
+ findUniqueOrThrow(
+ args?: SelectSubset,
+ ): Prisma__UserClient>;
+
+ /**
+ * Find the first User that matches the filter.
+ * Note, that providing `undefined` is treated as the value not being there.
+ * Read more here: https://pris.ly/d/null-undefined
+ * @param {UserFindFirstArgs} args - Arguments to find a User
+ * @example
+ * // Get one User
+ * const user = await prisma.user.findFirst({
+ * where: {
+ * // ... provide filter here
+ * }
+ * })
+ **/
+ findFirst<
+ T extends UserFindFirstArgs,
+ LocalRejectSettings = T["rejectOnNotFound"] extends RejectOnNotFound ? T["rejectOnNotFound"] : undefined,
+ >(
+ args?: SelectSubset,
+ ): HasReject extends True
+ ? Prisma__UserClient>
+ : Prisma__UserClient | null, null>;
+
+ /**
+ * Find the first User that matches the filter or
+ * throw `NotFoundError` if no matches were found.
+ * Note, that providing `undefined` is treated as the value not being there.
+ * Read more here: https://pris.ly/d/null-undefined
+ * @param {UserFindFirstOrThrowArgs} args - Arguments to find a User
+ * @example
+ * // Get one User
+ * const user = await prisma.user.findFirstOrThrow({
+ * where: {
+ * // ... provide filter here
+ * }
+ * })
+ **/
+ findFirstOrThrow(
+ args?: SelectSubset,
+ ): Prisma__UserClient>;
+
+ /**
+ * Find zero or more Users that matches the filter.
+ * Note, that providing `undefined` is treated as the value not being there.
+ * Read more here: https://pris.ly/d/null-undefined
+ * @param {UserFindManyArgs=} args - Arguments to filter and select certain fields only.
+ * @example
+ * // Get all Users
+ * const users = await prisma.user.findMany()
+ *
+ * // Get first 10 Users
+ * const users = await prisma.user.findMany({ take: 10 })
+ *
+ * // Only select the `id`
+ * const userWithIdOnly = await prisma.user.findMany({ select: { id: true } })
+ *
+ **/
+ findMany(
+ args?: SelectSubset,
+ ): Prisma.PrismaPromise>>;
+
+ /**
+ * Create a User.
+ * @param {UserCreateArgs} args - Arguments to create a User.
+ * @example
+ * // Create one User
+ * const User = await prisma.user.create({
+ * data: {
+ * // ... data to create a User
+ * }
+ * })
+ *
+ **/
+ create(args: SelectSubset): Prisma__UserClient>;
+
+ /**
+ * Delete a User.
+ * @param {UserDeleteArgs} args - Arguments to delete one User.
+ * @example
+ * // Delete one User
+ * const User = await prisma.user.delete({
+ * where: {
+ * // ... filter to delete one User
+ * }
+ * })
+ *
+ **/
+ delete(args: SelectSubset): Prisma__UserClient>;
+
+ /**
+ * Update one User.
+ * @param {UserUpdateArgs} args - Arguments to update one User.
+ * @example
+ * // Update one User
+ * const user = await prisma.user.update({
+ * where: {
+ * // ... provide filter here
+ * },
+ * data: {
+ * // ... provide data here
+ * }
+ * })
+ *
+ **/
+ update(args: SelectSubset): Prisma__UserClient>;
+
+ /**
+ * Delete zero or more Users.
+ * @param {UserDeleteManyArgs} args - Arguments to filter Users to delete.
+ * @example
+ * // Delete a few Users
+ * const { count } = await prisma.user.deleteMany({
+ * where: {
+ * // ... provide filter here
+ * }
+ * })
+ *
+ **/
+ deleteMany(
+ args?: SelectSubset,
+ ): Prisma.PrismaPromise;
+
+ /**
+ * Update zero or more Users.
+ * Note, that providing `undefined` is treated as the value not being there.
+ * Read more here: https://pris.ly/d/null-undefined
+ * @param {UserUpdateManyArgs} args - Arguments to update one or more rows.
+ * @example
+ * // Update many Users
+ * const user = await prisma.user.updateMany({
+ * where: {
+ * // ... provide filter here
+ * },
+ * data: {
+ * // ... provide data here
+ * }
+ * })
+ *
+ **/
+ updateMany(
+ args: SelectSubset,
+ ): Prisma.PrismaPromise;
+
+ /**
+ * Create or update one User.
+ * @param {UserUpsertArgs} args - Arguments to update or create a User.
+ * @example
+ * // Update or create a User
+ * const user = await prisma.user.upsert({
+ * create: {
+ * // ... data to create a User
+ * },
+ * update: {
+ * // ... in case it already exists, update
+ * },
+ * where: {
+ * // ... the filter for the User we want to update
+ * }
+ * })
+ **/
+ upsert(args: SelectSubset): Prisma__UserClient>;
+
+ /**
+ * Count the number of Users.
+ * Note, that providing `undefined` is treated as the value not being there.
+ * Read more here: https://pris.ly/d/null-undefined
+ * @param {UserCountArgs} args - Arguments to filter Users to count.
+ * @example
+ * // Count the number of Users
+ * const count = await prisma.user.count({
+ * where: {
+ * // ... the filter for the Users we want to count
+ * }
+ * })
+ **/
+ count(
+ args?: Subset,
+ ): Prisma.PrismaPromise<
+ T extends _Record<"select", any>
+ ? T["select"] extends true
+ ? number
+ : GetScalarType
+ : number
+ >;
+
+ /**
+ * Allows you to perform aggregations operations on a User.
+ * Note, that providing `undefined` is treated as the value not being there.
+ * Read more here: https://pris.ly/d/null-undefined
+ * @param {UserAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
+ * @example
+ * // Ordered by age ascending
+ * // Where email contains prisma.io
+ * // Limited to the 10 users
+ * const aggregations = await prisma.user.aggregate({
+ * _avg: {
+ * age: true,
+ * },
+ * where: {
+ * email: {
+ * contains: "prisma.io",
+ * },
+ * },
+ * orderBy: {
+ * age: "asc",
+ * },
+ * take: 10,
+ * })
+ **/
+ aggregate(
+ args: Subset,
+ ): Prisma.PrismaPromise>;
+
+ /**
+ * Group by User.
+ * Note, that providing `undefined` is treated as the value not being there.
+ * Read more here: https://pris.ly/d/null-undefined
+ * @param {UserGroupByArgs} args - Group by arguments.
+ * @example
+ * // Group by city, order by createdAt, get count
+ * const result = await prisma.user.groupBy({
+ * by: ['city', 'createdAt'],
+ * orderBy: {
+ * createdAt: true
+ * },
+ * _count: {
+ * _all: true
+ * },
+ * })
+ *
+ **/
+ groupBy<
+ T extends UserGroupByArgs,
+ HasSelectOrTake extends Or>, Extends<"take", Keys>>,
+ OrderByArg extends True extends HasSelectOrTake
+ ? { orderBy: UserGroupByArgs["orderBy"] }
+ : { orderBy?: UserGroupByArgs["orderBy"] },
+ OrderFields extends ExcludeUnderscoreKeys>>,
+ ByFields extends TupleToUnion,
+ ByValid extends Has,
+ HavingFields extends GetHavingFields,
+ HavingValid extends Has,
+ ByEmpty extends T["by"] extends never[] ? True : False,
+ InputErrors extends ByEmpty extends True
+ ? `Error: "by" must not be empty.`
+ : HavingValid extends False
+ ? {
+ [P in HavingFields]: P extends ByFields
+ ? never
+ : P extends string
+ ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
+ : [Error, "Field ", P, ` in "having" needs to be provided in "by"`];
+ }[HavingFields]
+ : "take" extends Keys
+ ? "orderBy" extends Keys
+ ? ByValid extends True
+ ? {}
+ : {
+ [P in OrderFields]: P extends ByFields
+ ? never
+ : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`;
+ }[OrderFields]
+ : 'Error: If you provide "take", you also need to provide "orderBy"'
+ : "skip" extends Keys
+ ? "orderBy" extends Keys
+ ? ByValid extends True
+ ? {}
+ : {
+ [P in OrderFields]: P extends ByFields
+ ? never
+ : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`;
+ }[OrderFields]
+ : 'Error: If you provide "skip", you also need to provide "orderBy"'
+ : ByValid extends True
+ ? {}
+ : {
+ [P in OrderFields]: P extends ByFields
+ ? never
+ : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`;
+ }[OrderFields],
+ >(
+ args: SubsetIntersection & InputErrors,
+ ): {} extends InputErrors ? GetUserGroupByPayload : Prisma.PrismaPromise;
+ }
+
+ /**
+ * The delegate class that acts as a "Promise-like" for User.
+ * Why is this prefixed with `Prisma__`?
+ * Because we want to prevent naming conflicts as mentioned in
+ * https://github.com/prisma/prisma-client-js/issues/707
+ */
+ export class Prisma__UserClient implements Prisma.PrismaPromise {
+ private readonly _dmmf;
+ private readonly _queryType;
+ private readonly _rootField;
+ private readonly _clientMethod;
+ private readonly _args;
+ private readonly _dataPath;
+ private readonly _errorFormat;
+ private readonly _measurePerformance?;
+ private _isList;
+ private _callsite;
+ private _requestPromise?;
+ readonly [Symbol.toStringTag]: "PrismaPromise";
+ constructor(
+ _dmmf: runtime.DMMFClass,
+ _queryType: "query" | "mutation",
+ _rootField: string,
+ _clientMethod: string,
+ _args: any,
+ _dataPath: string[],
+ _errorFormat: ErrorFormat,
+ _measurePerformance?: boolean | undefined,
+ _isList?: boolean,
+ );
+
+ posts(
+ args?: Subset,
+ ): Prisma.PrismaPromise> | Null>;
+
+ private get _document();
+ /**
+ * Attaches callbacks for the resolution and/or rejection of the Promise.
+ * @param onfulfilled The callback to execute when the Promise is resolved.
+ * @param onrejected The callback to execute when the Promise is rejected.
+ * @returns A Promise for the completion of which ever callback is executed.
+ */
+ then(
+ onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null,
+ onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null,
+ ): Promise;
+ /**
+ * Attaches a callback for only the rejection of the Promise.
+ * @param onrejected The callback to execute when the Promise is rejected.
+ * @returns A Promise for the completion of the callback.
+ */
+ catch(
+ onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null,
+ ): Promise;
+ /**
+ * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
+ * resolved value cannot be modified from the callback.
+ * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
+ * @returns A Promise for the completion of the callback.
+ */
+ finally(onfinally?: (() => void) | undefined | null): Promise;
+ }
+
+ // Custom InputTypes
+
+ /**
+ * User base type for findUnique actions
+ */
+ export type UserFindUniqueArgsBase = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * Filter, which User to fetch.
+ */
+ where: UserWhereUniqueInput;
+ };
+
+ /**
+ * User findUnique
+ */
+ export interface UserFindUniqueArgs extends UserFindUniqueArgsBase {
+ /**
+ * Throw an Error if query returns no results
+ * @deprecated since 4.0.0: use `findUniqueOrThrow` method instead
+ */
+ rejectOnNotFound?: RejectOnNotFound;
+ }
+
+ /**
+ * User findUniqueOrThrow
+ */
+ export type UserFindUniqueOrThrowArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * Filter, which User to fetch.
+ */
+ where: UserWhereUniqueInput;
+ };
+
+ /**
+ * User base type for findFirst actions
+ */
+ export type UserFindFirstArgsBase = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * Filter, which User to fetch.
+ */
+ where?: UserWhereInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
+ *
+ * Determine the order of Users to fetch.
+ */
+ orderBy?: Enumerable;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
+ *
+ * Sets the position for searching for Users.
+ */
+ cursor?: UserWhereUniqueInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Take `±n` Users from the position of the cursor.
+ */
+ take?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Skip the first `n` Users.
+ */
+ skip?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
+ *
+ * Filter by unique combinations of Users.
+ */
+ distinct?: Enumerable;
+ };
+
+ /**
+ * User findFirst
+ */
+ export interface UserFindFirstArgs extends UserFindFirstArgsBase {
+ /**
+ * Throw an Error if query returns no results
+ * @deprecated since 4.0.0: use `findFirstOrThrow` method instead
+ */
+ rejectOnNotFound?: RejectOnNotFound;
+ }
+
+ /**
+ * User findFirstOrThrow
+ */
+ export type UserFindFirstOrThrowArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * Filter, which User to fetch.
+ */
+ where?: UserWhereInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
+ *
+ * Determine the order of Users to fetch.
+ */
+ orderBy?: Enumerable;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
+ *
+ * Sets the position for searching for Users.
+ */
+ cursor?: UserWhereUniqueInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Take `±n` Users from the position of the cursor.
+ */
+ take?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Skip the first `n` Users.
+ */
+ skip?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
+ *
+ * Filter by unique combinations of Users.
+ */
+ distinct?: Enumerable;
+ };
+
+ /**
+ * User findMany
+ */
+ export type UserFindManyArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * Filter, which Users to fetch.
+ */
+ where?: UserWhereInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
+ *
+ * Determine the order of Users to fetch.
+ */
+ orderBy?: Enumerable;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
+ *
+ * Sets the position for listing Users.
+ */
+ cursor?: UserWhereUniqueInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Take `±n` Users from the position of the cursor.
+ */
+ take?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Skip the first `n` Users.
+ */
+ skip?: number;
+ distinct?: Enumerable;
+ };
+
+ /**
+ * User create
+ */
+ export type UserCreateArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * The data needed to create a User.
+ */
+ data: XOR;
+ };
+
+ /**
+ * User update
+ */
+ export type UserUpdateArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * The data needed to update a User.
+ */
+ data: XOR;
+ /**
+ * Choose, which User to update.
+ */
+ where: UserWhereUniqueInput;
+ };
+
+ /**
+ * User updateMany
+ */
+ export type UserUpdateManyArgs = {
+ /**
+ * The data used to update Users.
+ */
+ data: XOR;
+ /**
+ * Filter which Users to update
+ */
+ where?: UserWhereInput;
+ };
+
+ /**
+ * User upsert
+ */
+ export type UserUpsertArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * The filter to search for the User to update in case it exists.
+ */
+ where: UserWhereUniqueInput;
+ /**
+ * In case the User found by the `where` argument doesn't exist, create a new User with this data.
+ */
+ create: XOR;
+ /**
+ * In case the User was found with the provided `where` argument, update it with this data.
+ */
+ update: XOR;
+ };
+
+ /**
+ * User delete
+ */
+ export type UserDeleteArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ /**
+ * Filter which User to delete.
+ */
+ where: UserWhereUniqueInput;
+ };
+
+ /**
+ * User deleteMany
+ */
+ export type UserDeleteManyArgs = {
+ /**
+ * Filter which Users to delete
+ */
+ where?: UserWhereInput;
+ };
+
+ /**
+ * User.posts
+ */
+ export type User$postsArgs = {
+ /**
+ * Select specific fields to fetch from the Post
+ */
+ select?: PostSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: PostInclude | null;
+ where?: PostWhereInput;
+ orderBy?: Enumerable;
+ cursor?: PostWhereUniqueInput;
+ take?: number;
+ skip?: number;
+ distinct?: Enumerable;
+ };
+
+ /**
+ * User without action
+ */
+ export type UserArgs = {
+ /**
+ * Select specific fields to fetch from the User
+ */
+ select?: UserSelect | null;
+ /**
+ * Choose, which related nodes to fetch as well.
+ */
+ include?: UserInclude | null;
+ };
+
+ /**
+ * Model Post
+ */
+
+ export type AggregatePost = {
+ _count: PostCountAggregateOutputType | null;
+ _avg: PostAvgAggregateOutputType | null;
+ _sum: PostSumAggregateOutputType | null;
+ _min: PostMinAggregateOutputType | null;
+ _max: PostMaxAggregateOutputType | null;
+ };
+
+ export type PostAvgAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ authorId: number | null;
+ };
+
+ export type PostSumAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ authorId: number | null;
+ };
+
+ export type PostMinAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ title: string | null;
+ content: string | null;
+ published: boolean | null;
+ authorId: number | null;
+ };
+
+ export type PostMaxAggregateOutputType = {
+ id: number | null;
+ testId: number | null;
+ title: string | null;
+ content: string | null;
+ published: boolean | null;
+ authorId: number | null;
+ };
+
+ export type PostCountAggregateOutputType = {
+ id: number;
+ testId: number;
+ title: number;
+ content: number;
+ published: number;
+ authorId: number;
+ _all: number;
+ };
+
+ export type PostAvgAggregateInputType = {
+ id?: true;
+ testId?: true;
+ authorId?: true;
+ };
+
+ export type PostSumAggregateInputType = {
+ id?: true;
+ testId?: true;
+ authorId?: true;
+ };
+
+ export type PostMinAggregateInputType = {
+ id?: true;
+ testId?: true;
+ title?: true;
+ content?: true;
+ published?: true;
+ authorId?: true;
+ };
+
+ export type PostMaxAggregateInputType = {
+ id?: true;
+ testId?: true;
+ title?: true;
+ content?: true;
+ published?: true;
+ authorId?: true;
+ };
+
+ export type PostCountAggregateInputType = {
+ id?: true;
+ testId?: true;
+ title?: true;
+ content?: true;
+ published?: true;
+ authorId?: true;
+ _all?: true;
+ };
+
+ export type PostAggregateArgs = {
+ /**
+ * Filter which Post to aggregate.
+ */
+ where?: PostWhereInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
+ *
+ * Determine the order of Posts to fetch.
+ */
+ orderBy?: Enumerable;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
+ *
+ * Sets the start position
+ */
+ cursor?: PostWhereUniqueInput;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Take `±n` Posts from the position of the cursor.
+ */
+ take?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
+ *
+ * Skip the first `n` Posts.
+ */
+ skip?: number;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Count returned Posts
+ **/
+ _count?: true | PostCountAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to average
+ **/
+ _avg?: PostAvgAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to sum
+ **/
+ _sum?: PostSumAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to find the minimum value
+ **/
+ _min?: PostMinAggregateInputType;
+ /**
+ * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
+ *
+ * Select which fields to find the maximum value
+ **/
+ _max?: PostMaxAggregateInputType;
+ };
+
+ export type GetPostAggregateType = {
+ [P in keyof T & keyof AggregatePost]: P extends "_count" | "count"
+ ? T[P] extends true
+ ? number
+ : GetScalarType
+ : GetScalarType;
+ };
+
+ export type PostGroupByArgs = {
+ where?: PostWhereInput;
+ orderBy?: Enumerable;
+ by: PostScalarFieldEnum[];
+ having?: PostScalarWhereWithAggregatesInput;
+ take?: number;
+ skip?: number;
+ _count?: PostCountAggregateInputType | true;
+ _avg?: PostAvgAggregateInputType;
+ _sum?: PostSumAggregateInputType;
+ _min?: PostMinAggregateInputType;
+ _max?: PostMaxAggregateInputType;
+ };
+
+ export type PostGroupByOutputType = {
+ id: number;
+ testId: number;
+ title: string;
+ content: string | null;
+ published: boolean;
+ authorId: number;
+ _count: PostCountAggregateOutputType | null;
+ _avg: PostAvgAggregateOutputType | null;
+ _sum: PostSumAggregateOutputType | null;
+ _min: PostMinAggregateOutputType | null;
+ _max: PostMaxAggregateOutputType | null;
+ };
+
+ type GetPostGroupByPayload = Prisma.PrismaPromise<
+ Array<
+ PickArray & {
+ [P in keyof T & keyof PostGroupByOutputType]: P extends "_count"
+ ? T[P] extends boolean
+ ? number
+ : GetScalarType
+ : GetScalarType;
+ }
+ >
+ >;
+
+ export type PostSelect = {
+ id?: boolean;
+ testId?: boolean;
+ title?: boolean;
+ content?: boolean;
+ published?: boolean;
+ authorId?: boolean;
+ author?: boolean | UserArgs;
+ };
+
+ export type PostInclude = {
+ author?: boolean | UserArgs;
+ };
+
+ export type PostGetPayload