From df0c6cf7c0c75155831877b1e63731c92a00b75a Mon Sep 17 00:00:00 2001 From: timsuchanek Date: Mon, 28 Dec 2020 15:27:20 +0100 Subject: [PATCH] chore: cleanup --- src/packages/client/fixtures/blog/main.ts | 310 +--------------------- 1 file changed, 1 insertion(+), 309 deletions(-) diff --git a/src/packages/client/fixtures/blog/main.ts b/src/packages/client/fixtures/blog/main.ts index f28b7512d6ea..c0125d3d5b72 100644 --- a/src/packages/client/fixtures/blog/main.ts +++ b/src/packages/client/fixtures/blog/main.ts @@ -1,4 +1,4 @@ -import { Prisma, PrismaClient } from './@prisma/client' +import { PrismaClient } from './@prisma/client' const prisma = new PrismaClient({ log: [ @@ -19,15 +19,8 @@ async function main() { avg: { age: true, }, - take: 0, - - // count: { - // _all: true, - // }, }) - // res.count._all - console.log(res) prisma.$disconnect() @@ -36,304 +29,3 @@ async function main() { main().catch((e) => { console.error(e) }) - -export type Key = string | number | symbol - -type MergeProp = K extends OOK - ? Exclude | O1K - : [OK] extends [never] - ? O1K - : OK extends undefined - ? O1K - : OK - -export type AtBasic = K extends keyof O - ? O[K] - : never - -export type _OptionalKeys = { - [K in keyof O]-?: {} extends Pick ? K : never -}[keyof O] - -type Merge< - O extends object, - O1 extends object, - OOK extends Key = _OptionalKeys -> = { - [K in keyof (O & O1)]: MergeProp, AtBasic, K, OOK> -} - -export type Spread = Id< - // Merge the properties of L and R into a partial (preserving order). - Partial<{ [P in keyof (L & R)]: SpreadProp }> & - // Restore any required L-exclusive properties. - Pick> & - // Restore any required R properties. - Pick> -> - -/** Merge a property from `R` to `L` like the spread operator. */ -type SpreadProp< - L extends object, - R extends object, - P extends keyof (L & R) -> = P extends keyof R - ? undefined extends R[P] - ? L[Extract] | R[P] - : R[P] - : L[Extract] - -/** Property names that are always defined */ -type RequiredProps = { - [P in keyof T]-?: undefined extends T[P] ? never : P -}[keyof T] - -type Id = { [P in keyof T]: T[P] } - -type ReqOrderBy = { orderBy: Prisma.GroupByUserArgs['orderBy'] } - -export type Tail = T['length'] extends 0 - ? never - : T extends [any, ...infer Tail] - ? Tail - : T - -type GetFieldsFromOrderBy< - T extends Prisma.Enumerable | undefined -> = T extends Record - ? keyof T - : T extends [infer U] - ? keyof U - : T extends [infer U, infer K] - ? keyof U | keyof K - : T extends [infer U, infer K, infer D] - ? keyof U | keyof K | keyof D - : T extends [infer U, infer K, infer D, infer N] - ? keyof U | keyof K | keyof D | keyof N - : T extends [infer U, infer K, infer D, infer N, infer B] - ? keyof U | keyof K | keyof D | keyof N | keyof B - : T extends [infer U, infer K, infer D, infer N, infer B, infer Y] - ? keyof U | keyof K | keyof D | keyof N | keyof B | keyof Y - : T extends [infer U, infer K, infer D, infer N, infer B, infer Y, infer Z] - ? keyof U | keyof K | keyof D | keyof N | keyof B | keyof Y | keyof Z - : never - -type Yess = GetFieldsFromOrderBy< - [{ age: 'desc' }, { email: 'asc' }, { propertyId: 'asc' }] -> - -/** - * 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 -} & - K - -/** - * 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> = Pick> - -type GetUserGroupByPayload = PickArray< - Prisma.UserGroupByOutputType, - T['by'] -> - -export type RequiredKeys = { - [K in keyof T]-?: {} extends Pick ? never : K -}[keyof T] - -export type Union = any -export type IntersectOf = ( - U extends unknown ? (k: U) => void : never -) extends (k: infer I) => void - ? I - : never - -/** -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< - Extends, U1> -> - -export type Or = { - 0: { - 0: 0 - 1: 1 - } - 1: { - 0: 1 - 1: 1 - } -}[B1][B2] - -declare function groupBy< - T extends Prisma.GroupByUserArgs, - HasSelectOrTake extends Or< - Extends<'skip', Keys>, - Extends<'take', Keys> - >, - U extends True extends HasSelectOrTake - ? ReqOrderBy - : { orderBy?: Prisma.GroupByUserArgs['orderBy'] }, - OrderFields extends Keys>, - ByFields extends TupleToUnion, - ByValid extends Has ->( - args: Subset, -): 'take' extends Keys - ? 'orderBy' extends Keys - ? ByValid extends True - ? Prisma.GetUserGroupByPayload - : { - [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 - ? Prisma.GetUserGroupByPayload - : { - [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"'] - : Prisma.GetUserGroupByPayload - -//GetMissingOrT>, TupleToUnion, {hello: 'world'}> - -type MyKeyOf = keyof T -export type Keys = U extends unknown ? keyof U : never - -type X = { a: 1 } | { b: 2 } - -type XZ = IntersectOf - -const xz: XZ = null as any - -async function gain() { - const res = await groupBy({ - by: ['id', 'email', 'age'], - // skip: 0, - take: 10, - orderBy: [ - { - age: 'desc', - }, - { - email: 'asc', - }, - // { - // propertyId: 'asc', - // }, - ], - - // orderBy: { - // age: 'asc', - // }, - - // blue: 'string', - max: { - age: true, - }, - }) - - res.max.age - - type xxx = keyof typeof res - - // res.skip - - // res.id -} - -type RequiredSet = 'b' - -type GivenSet = 'b' | 'c' - -type CleanupNever = { - [P in RequiredKeys]: T[P] extends never ? never : T[P] -} - -export type KnownKeys = { - [K in keyof T]: string extends K ? never : number extends K ? never : K - // eslint-disable-next-line @typescript-eslint/ban-types -} extends { [_ in keyof T]: infer U } - ? {} extends U - ? never - : U - : never - -type GetMissing = { - [P in Keys]: P extends Given - ? never - : [`Error: Field "{P}" in "orderBy" needs to be provided in "by"`, P] -} //[Required] - -type GetMissingOrT> = U //{req: Required, giv: Given} //never extends U ? T : U - -// type Missi = GetMissingOrT - -type TT = { - skip: 0 -} - -type Mu = TT extends Record<'skip' | 'mip', any> ? 'yes' : 'no' - -type MySoloMerge = { - [P in keyof T]: T[P] -} - -type MyMerge = { - [P in keyof T | keyof U]: P extends keyof T - ? T[P] - : P extends keyof U - ? U[P] - : never -} - -type A = { - id?: number -} - -type B = { - name: string -} - -type C = MyMerge