vsrepo 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1040 -982
- package/VSRepository/VSRepository.d.ts +278 -274
- package/VSRepository/VSRepository.js +60 -58
- package/package.json +1 -1
|
@@ -14,13 +14,13 @@ export type DbTransaction = Prisma.TransactionClient;
|
|
|
14
14
|
* Aceita tanto o cliente principal do Prisma quanto um cliente de transação.
|
|
15
15
|
*/
|
|
16
16
|
export type ClientOrTransaction = DbClient | DbTransaction;
|
|
17
|
-
|
|
18
|
-
export * from './VSRepoError.js';
|
|
19
|
-
|
|
20
|
-
type OrderPattern = {
|
|
21
|
-
[key: string]: 'asc' | 'desc' | { _count: 'asc' | 'desc' } | OrderPattern;
|
|
22
|
-
};
|
|
23
|
-
|
|
17
|
+
|
|
18
|
+
export * from './VSRepoError.js';
|
|
19
|
+
|
|
20
|
+
type OrderPattern = {
|
|
21
|
+
[key: string]: 'asc' | 'desc' | { _count: 'asc' | 'desc' } | OrderPattern;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
24
|
/**
|
|
25
25
|
* Opções de paginação aceitas pelos métodos com sufixo `Paginated`.
|
|
26
26
|
*
|
|
@@ -41,141 +41,141 @@ export type PaginationOptions<TCursor = unknown> = {
|
|
|
41
41
|
* Pode ser uma única ordenação ou uma lista de ordenações encadeadas.
|
|
42
42
|
*/
|
|
43
43
|
export type OrderOptions = OrderPattern | OrderPattern[];
|
|
44
|
-
|
|
45
|
-
type ValidMethodPatterns =
|
|
46
|
-
| `existsBy${string}` | `findBy${string}` | `findUniqueBy${string}`
|
|
47
|
-
| `findFirstBy${string}` | `findFirst${string}` | `findManyBy${string}`
|
|
48
|
-
| `findMany${string}` | `createManyAndReturn${string}` | `createMany${string}`
|
|
49
|
-
| `create${string}` | `updateManyAndReturnBy${string}` | `updateManyBy${string}`
|
|
50
|
-
| `updateBy${string}` | `upsertBy${string}` | `deleteManyBy${string}`
|
|
51
|
-
| `deleteBy${string}` | `countBy${string}` | `count${string}`
|
|
52
|
-
| `findWhere${string}` | `findListWhere${string}`;
|
|
53
|
-
|
|
54
|
-
type StringModifiers =
|
|
55
|
-
| 'NotStartsWith' | 'StartsWith' | 'NotEndsWith' | 'EndsWith'
|
|
56
|
-
| 'NotContains' | 'Contains' | 'NotIn' | 'In' | 'Not';
|
|
57
|
-
|
|
58
|
-
type NumberModifiers =
|
|
59
|
-
| 'LessThanEqual' | 'LessThan' | 'GreaterThanEqual' | 'GreaterThan';
|
|
60
|
-
|
|
61
|
-
type StripModifier<S extends string> =
|
|
62
|
-
S extends `${infer Base}${`${StringModifiers}Insensitive`}` ? Base :
|
|
63
|
-
S extends `${infer Base}${StringModifiers | NumberModifiers}` ? Base :
|
|
64
|
-
S extends `${infer Base}Insensitive` ? Base :
|
|
65
|
-
S;
|
|
66
|
-
|
|
67
|
-
type ExtractFieldName<S extends string> = Uncapitalize<StripModifier<S>>;
|
|
68
|
-
|
|
69
|
-
type IsArrayFilter<S extends string> = S extends `${string}${'NotIn' | 'In'}` ? true : false;
|
|
70
|
-
|
|
71
|
-
type ParseRelation<S extends string> =
|
|
72
|
-
S extends `${infer Rel}Without${infer Rest}` ? [Uncapitalize<Rel>, 'isNot', Rest] :
|
|
73
|
-
S extends `${infer Rel}With${infer Rest}` ? [Uncapitalize<Rel>, 'is', Rest] :
|
|
74
|
-
S extends `${infer Rel}Some${infer Rest}` ? [Uncapitalize<Rel>, 'some', Rest] :
|
|
75
|
-
S extends `${infer Rel}Every${infer Rest}` ? [Uncapitalize<Rel>, 'every', Rest] :
|
|
76
|
-
S extends `${infer Rel}None${infer Rest}` ? [Uncapitalize<Rel>, 'none', Rest] : null;
|
|
77
|
-
|
|
78
|
-
type GetFieldType<T, S extends string, I> = ExtractFieldName<S> extends infer FieldName
|
|
79
|
-
? FieldName extends keyof T
|
|
80
|
-
? IsArrayFilter<S> extends true
|
|
81
|
-
? T[FieldName][]
|
|
82
|
-
: NonNullable<T[FieldName]> extends object | any[]
|
|
83
|
-
? I extends { whereInput: infer W }
|
|
84
|
-
? FieldName extends keyof NonNullable<W> ? NonNullable<W>[FieldName] : T[FieldName]
|
|
85
|
-
: T[FieldName]
|
|
86
|
-
: T[FieldName]
|
|
87
|
-
: ParseRelation<S> extends [infer Rel extends keyof T, any, infer Rest extends string]
|
|
88
|
-
? GetFieldType<NonNullable<T[Rel]> extends any[] ? NonNullable<T[Rel]>[number] : NonNullable<T[Rel]>, Rest, unknown>
|
|
89
|
-
: unknown
|
|
90
|
-
: unknown;
|
|
91
|
-
|
|
92
|
-
type NoArgModifiers = 'IsNull' | 'IsNotNull' | 'IsTrue' | 'IsFalse' | 'None' | 'Some' | 'Every' | 'Without';
|
|
93
|
-
|
|
94
|
-
type IsNoArgModifier<S extends string> =
|
|
95
|
-
S extends `${string}${'StartsWith' | 'EndsWith'}` ? false :
|
|
96
|
-
S extends `${string}${NoArgModifiers | 'With'}` ? true :
|
|
97
|
-
false;
|
|
98
|
-
|
|
99
|
-
type IsOptional<S extends string> = S extends `${string}Optional` ? true : false;
|
|
100
|
-
type StripOptional<S extends string> = S extends `${infer Base}Optional` ? Base : S;
|
|
101
|
-
|
|
102
|
-
type MapToContractTypes<T, Arr extends string[], I> =
|
|
103
|
-
Arr extends [infer First extends string, ...infer Rest extends string[]]
|
|
104
|
-
? First extends ''
|
|
105
|
-
? MapToContractTypes<T, Rest, I>
|
|
106
|
-
: StripOptional<First> extends infer CleanFirst extends string
|
|
107
|
-
? IsNoArgModifier<CleanFirst> extends true
|
|
108
|
-
? MapToContractTypes<T, Rest, I>
|
|
109
|
-
: IsOptional<First> extends true
|
|
110
|
-
? [GetFieldType<T, CleanFirst, I> | undefined, ...MapToContractTypes<T, Rest, I>]
|
|
111
|
-
: [GetFieldType<T, CleanFirst, I>, ...MapToContractTypes<T, Rest, I>]
|
|
112
|
-
: never
|
|
113
|
-
: [];
|
|
114
|
-
|
|
115
|
-
type HasMultipleANDs<S extends string> = S extends `${string}AND${string}AND${string}` ? true : false;
|
|
116
|
-
|
|
117
|
-
type SplitAllTokens<S extends string> =
|
|
118
|
-
S extends `${infer L}AND${infer R}` ? [...SplitAllTokens<L>, ...SplitAllTokens<R>] :
|
|
119
|
-
S extends `${infer L}And${infer R}` ? [...SplitAllTokens<L>, ...SplitAllTokens<R>] :
|
|
120
|
-
S extends `${infer L}Or${infer R}` ? [...SplitAllTokens<L>, ...SplitAllTokens<R>] :
|
|
121
|
-
S extends '' ? [] :
|
|
122
|
-
[S];
|
|
123
|
-
|
|
124
|
-
type ExtractFields<T, R extends string, I> =
|
|
125
|
-
R extends '' ? []
|
|
126
|
-
: FilterNonEmpty<MapToContractTypes<T, SplitAllTokens<R>, I>>;
|
|
127
|
-
|
|
128
|
-
type FilterNonEmpty<T extends unknown[]> =
|
|
129
|
-
T extends [infer First, ...infer Rest]
|
|
130
|
-
? First extends ''
|
|
131
|
-
? FilterNonEmpty<Rest>
|
|
132
|
-
: [First, ...FilterNonEmpty<Rest>]
|
|
133
|
-
: [];
|
|
134
|
-
|
|
135
|
-
type ResolveReturnType<M extends string, TSelected> =
|
|
136
|
-
M extends 'existsBy' ? boolean :
|
|
137
|
-
M extends 'createMany' | 'updateManyBy' | 'deleteManyBy' ? { count: number } :
|
|
138
|
-
M extends 'findMany' | 'createManyAndReturn' | 'updateManyAndReturnBy' | 'findListWhere' | 'findByList' ? TSelected[] :
|
|
139
|
-
M extends 'findUnique' | 'findFirst' | 'findWhere' | 'findByOne' ? TSelected | null :
|
|
140
|
-
M extends 'create' | 'updateBy' | 'upsertBy' | 'deleteBy' ? TSelected :
|
|
141
|
-
M extends 'count' ? number : never;
|
|
142
|
-
|
|
143
|
-
type ExtraArgs<M extends string, R extends string, I> = [
|
|
144
|
-
...(M extends 'upsertBy' ? [update: I extends { updateInput: infer U } ? U : unknown, create: I extends { createInput: infer C } ? C : unknown]
|
|
145
|
-
: M extends 'create' ? [data: I extends { createInput: infer C } ? C : unknown]
|
|
146
|
-
: M extends 'updateBy' ? [data: I extends { updateInput: infer U } ? U : unknown]
|
|
147
|
-
: M extends 'createMany' | 'createManyAndReturn' ? [data: I extends { createManyInput: infer CM } ? CM : unknown]
|
|
148
|
-
: M extends 'updateManyBy' | 'updateManyAndReturnBy' ? [data: I extends { updateManyInput: infer UM } ? UM : unknown]
|
|
149
|
-
: M extends 'findWhere' | 'findListWhere' ? [where: I extends { whereInput: infer W } ? NonNullable<W> : unknown]
|
|
150
|
-
: []),
|
|
151
|
-
...(R extends `${string}PaginatedAndOrdered` ? [pagination: PaginationOptions<I extends { cursorInput: infer C } ? C : unknown>, order: I extends { orderByInput: infer OB } ? OB : OrderOptions]
|
|
152
|
-
: R extends `${string}OrderedAndPaginated` ? [order: I extends { orderByInput: infer OB } ? OB : OrderOptions, pagination: PaginationOptions<I extends { cursorInput: infer C } ? C : unknown>]
|
|
153
|
-
: R extends `${string}Paginated` ? [pagination: PaginationOptions<I extends { cursorInput: infer C } ? C : unknown>]
|
|
154
|
-
: R extends `${string}Ordered` ? [order: I extends { orderByInput: infer OB } ? OB : OrderOptions]
|
|
155
|
-
: [])
|
|
156
|
-
];
|
|
157
|
-
|
|
158
|
-
type PrismaDelegate<M extends Prisma.ModelName> = Uncapitalize<M> extends keyof DbClient ? DbClient[Uncapitalize<M>] : never;
|
|
159
|
-
|
|
160
|
-
type FullModelType<M extends Prisma.ModelName> =
|
|
161
|
-
Prisma.Result<PrismaDelegate<M>, {}, 'findMany'> extends Array<infer U> ? U : never;
|
|
162
|
-
|
|
163
|
-
type SelectedModel<M extends Prisma.ModelName, S, SelectModels> =
|
|
164
|
-
[S] extends [false]
|
|
165
|
-
? FullModelType<M>
|
|
166
|
-
: [S] extends [never]
|
|
167
|
-
? FullModelType<M>
|
|
168
|
-
: [S] extends [keyof SelectModels]
|
|
169
|
-
? (Prisma.Result<PrismaDelegate<M>, { select: SelectModels[S] }, 'findMany'> extends Array<infer U> ? U : never)
|
|
170
|
-
: FullModelType<M>;
|
|
171
|
-
|
|
172
|
-
type CleanFields<R extends string> =
|
|
173
|
-
R extends `${infer F}PaginatedAndOrdered` ? F :
|
|
174
|
-
R extends `${infer F}OrderedAndPaginated` ? F :
|
|
175
|
-
R extends `${infer F}Paginated` ? F :
|
|
176
|
-
R extends `${infer F}Ordered` ? F :
|
|
177
|
-
R extends `${infer F}SkipDuplicates` ? F : R;
|
|
178
|
-
|
|
44
|
+
|
|
45
|
+
type ValidMethodPatterns =
|
|
46
|
+
| `existsBy${string}` | `findBy${string}` | `findUniqueBy${string}`
|
|
47
|
+
| `findFirstBy${string}` | `findFirst${string}` | `findManyBy${string}`
|
|
48
|
+
| `findMany${string}` | `createManyAndReturn${string}` | `createMany${string}`
|
|
49
|
+
| `create${string}` | `updateManyAndReturnBy${string}` | `updateManyBy${string}`
|
|
50
|
+
| `updateBy${string}` | `upsertBy${string}` | `deleteManyBy${string}`
|
|
51
|
+
| `deleteBy${string}` | `countBy${string}` | `count${string}`
|
|
52
|
+
| `findWhere${string}` | `findListWhere${string}`;
|
|
53
|
+
|
|
54
|
+
type StringModifiers =
|
|
55
|
+
| 'NotStartsWith' | 'StartsWith' | 'NotEndsWith' | 'EndsWith'
|
|
56
|
+
| 'NotContains' | 'Contains' | 'NotIn' | 'In' | 'Not';
|
|
57
|
+
|
|
58
|
+
type NumberModifiers =
|
|
59
|
+
| 'LessThanEqual' | 'LessThan' | 'GreaterThanEqual' | 'GreaterThan';
|
|
60
|
+
|
|
61
|
+
type StripModifier<S extends string> =
|
|
62
|
+
S extends `${infer Base}${`${StringModifiers}Insensitive`}` ? Base :
|
|
63
|
+
S extends `${infer Base}${StringModifiers | NumberModifiers}` ? Base :
|
|
64
|
+
S extends `${infer Base}Insensitive` ? Base :
|
|
65
|
+
S;
|
|
66
|
+
|
|
67
|
+
type ExtractFieldName<S extends string> = Uncapitalize<StripModifier<S>>;
|
|
68
|
+
|
|
69
|
+
type IsArrayFilter<S extends string> = S extends `${string}${'NotIn' | 'In'}` ? true : false;
|
|
70
|
+
|
|
71
|
+
type ParseRelation<S extends string> =
|
|
72
|
+
S extends `${infer Rel}Without${infer Rest}` ? [Uncapitalize<Rel>, 'isNot', Rest] :
|
|
73
|
+
S extends `${infer Rel}With${infer Rest}` ? [Uncapitalize<Rel>, 'is', Rest] :
|
|
74
|
+
S extends `${infer Rel}Some${infer Rest}` ? [Uncapitalize<Rel>, 'some', Rest] :
|
|
75
|
+
S extends `${infer Rel}Every${infer Rest}` ? [Uncapitalize<Rel>, 'every', Rest] :
|
|
76
|
+
S extends `${infer Rel}None${infer Rest}` ? [Uncapitalize<Rel>, 'none', Rest] : null;
|
|
77
|
+
|
|
78
|
+
type GetFieldType<T, S extends string, I> = ExtractFieldName<S> extends infer FieldName
|
|
79
|
+
? FieldName extends keyof T
|
|
80
|
+
? IsArrayFilter<S> extends true
|
|
81
|
+
? T[FieldName][]
|
|
82
|
+
: NonNullable<T[FieldName]> extends object | any[]
|
|
83
|
+
? I extends { whereInput: infer W }
|
|
84
|
+
? FieldName extends keyof NonNullable<W> ? NonNullable<W>[FieldName] : T[FieldName]
|
|
85
|
+
: T[FieldName]
|
|
86
|
+
: T[FieldName]
|
|
87
|
+
: ParseRelation<S> extends [infer Rel extends keyof T, any, infer Rest extends string]
|
|
88
|
+
? GetFieldType<NonNullable<T[Rel]> extends any[] ? NonNullable<T[Rel]>[number] : NonNullable<T[Rel]>, Rest, unknown>
|
|
89
|
+
: unknown
|
|
90
|
+
: unknown;
|
|
91
|
+
|
|
92
|
+
type NoArgModifiers = 'IsNull' | 'IsNotNull' | 'IsTrue' | 'IsFalse' | 'None' | 'Some' | 'Every' | 'Without';
|
|
93
|
+
|
|
94
|
+
type IsNoArgModifier<S extends string> =
|
|
95
|
+
S extends `${string}${'StartsWith' | 'EndsWith'}` ? false :
|
|
96
|
+
S extends `${string}${NoArgModifiers | 'With'}` ? true :
|
|
97
|
+
false;
|
|
98
|
+
|
|
99
|
+
type IsOptional<S extends string> = S extends `${string}Optional` ? true : false;
|
|
100
|
+
type StripOptional<S extends string> = S extends `${infer Base}Optional` ? Base : S;
|
|
101
|
+
|
|
102
|
+
type MapToContractTypes<T, Arr extends string[], I> =
|
|
103
|
+
Arr extends [infer First extends string, ...infer Rest extends string[]]
|
|
104
|
+
? First extends ''
|
|
105
|
+
? MapToContractTypes<T, Rest, I>
|
|
106
|
+
: StripOptional<First> extends infer CleanFirst extends string
|
|
107
|
+
? IsNoArgModifier<CleanFirst> extends true
|
|
108
|
+
? MapToContractTypes<T, Rest, I>
|
|
109
|
+
: IsOptional<First> extends true
|
|
110
|
+
? [GetFieldType<T, CleanFirst, I> | undefined, ...MapToContractTypes<T, Rest, I>]
|
|
111
|
+
: [GetFieldType<T, CleanFirst, I>, ...MapToContractTypes<T, Rest, I>]
|
|
112
|
+
: never
|
|
113
|
+
: [];
|
|
114
|
+
|
|
115
|
+
type HasMultipleANDs<S extends string> = S extends `${string}AND${string}AND${string}` ? true : false;
|
|
116
|
+
|
|
117
|
+
type SplitAllTokens<S extends string> =
|
|
118
|
+
S extends `${infer L}AND${infer R}` ? [...SplitAllTokens<L>, ...SplitAllTokens<R>] :
|
|
119
|
+
S extends `${infer L}And${infer R}` ? [...SplitAllTokens<L>, ...SplitAllTokens<R>] :
|
|
120
|
+
S extends `${infer L}Or${infer R}` ? [...SplitAllTokens<L>, ...SplitAllTokens<R>] :
|
|
121
|
+
S extends '' ? [] :
|
|
122
|
+
[S];
|
|
123
|
+
|
|
124
|
+
type ExtractFields<T, R extends string, I> =
|
|
125
|
+
R extends '' ? []
|
|
126
|
+
: FilterNonEmpty<MapToContractTypes<T, SplitAllTokens<R>, I>>;
|
|
127
|
+
|
|
128
|
+
type FilterNonEmpty<T extends unknown[]> =
|
|
129
|
+
T extends [infer First, ...infer Rest]
|
|
130
|
+
? First extends ''
|
|
131
|
+
? FilterNonEmpty<Rest>
|
|
132
|
+
: [First, ...FilterNonEmpty<Rest>]
|
|
133
|
+
: [];
|
|
134
|
+
|
|
135
|
+
type ResolveReturnType<M extends string, TSelected> =
|
|
136
|
+
M extends 'existsBy' ? boolean :
|
|
137
|
+
M extends 'createMany' | 'updateManyBy' | 'deleteManyBy' ? { count: number } :
|
|
138
|
+
M extends 'findMany' | 'createManyAndReturn' | 'updateManyAndReturnBy' | 'findListWhere' | 'findByList' ? TSelected[] :
|
|
139
|
+
M extends 'findUnique' | 'findFirst' | 'findWhere' | 'findByOne' ? TSelected | null :
|
|
140
|
+
M extends 'create' | 'updateBy' | 'upsertBy' | 'deleteBy' ? TSelected :
|
|
141
|
+
M extends 'count' ? number : never;
|
|
142
|
+
|
|
143
|
+
type ExtraArgs<M extends string, R extends string, I> = [
|
|
144
|
+
...(M extends 'upsertBy' ? [update: I extends { updateInput: infer U } ? U : unknown, create: I extends { createInput: infer C } ? C : unknown]
|
|
145
|
+
: M extends 'create' ? [data: I extends { createInput: infer C } ? C : unknown]
|
|
146
|
+
: M extends 'updateBy' ? [data: I extends { updateInput: infer U } ? U : unknown]
|
|
147
|
+
: M extends 'createMany' | 'createManyAndReturn' ? [data: I extends { createManyInput: infer CM } ? CM : unknown]
|
|
148
|
+
: M extends 'updateManyBy' | 'updateManyAndReturnBy' ? [data: I extends { updateManyInput: infer UM } ? UM : unknown]
|
|
149
|
+
: M extends 'findWhere' | 'findListWhere' ? [where: I extends { whereInput: infer W } ? NonNullable<W> : unknown]
|
|
150
|
+
: []),
|
|
151
|
+
...(R extends `${string}PaginatedAndOrdered` ? [pagination: PaginationOptions<I extends { cursorInput: infer C } ? C : unknown>, order: I extends { orderByInput: infer OB } ? OB : OrderOptions]
|
|
152
|
+
: R extends `${string}OrderedAndPaginated` ? [order: I extends { orderByInput: infer OB } ? OB : OrderOptions, pagination: PaginationOptions<I extends { cursorInput: infer C } ? C : unknown>]
|
|
153
|
+
: R extends `${string}Paginated` ? [pagination: PaginationOptions<I extends { cursorInput: infer C } ? C : unknown>]
|
|
154
|
+
: R extends `${string}Ordered` ? [order: I extends { orderByInput: infer OB } ? OB : OrderOptions]
|
|
155
|
+
: [])
|
|
156
|
+
];
|
|
157
|
+
|
|
158
|
+
type PrismaDelegate<M extends Prisma.ModelName> = Uncapitalize<M> extends keyof DbClient ? DbClient[Uncapitalize<M>] : never;
|
|
159
|
+
|
|
160
|
+
type FullModelType<M extends Prisma.ModelName> =
|
|
161
|
+
Prisma.Result<PrismaDelegate<M>, {}, 'findMany'> extends Array<infer U> ? U : never;
|
|
162
|
+
|
|
163
|
+
type SelectedModel<M extends Prisma.ModelName, S, SelectModels> =
|
|
164
|
+
[S] extends [false]
|
|
165
|
+
? FullModelType<M>
|
|
166
|
+
: [S] extends [never]
|
|
167
|
+
? FullModelType<M>
|
|
168
|
+
: [S] extends [keyof SelectModels]
|
|
169
|
+
? (Prisma.Result<PrismaDelegate<M>, { select: SelectModels[S] }, 'findMany'> extends Array<infer U> ? U : never)
|
|
170
|
+
: FullModelType<M>;
|
|
171
|
+
|
|
172
|
+
type CleanFields<R extends string> =
|
|
173
|
+
R extends `${infer F}PaginatedAndOrdered` ? F :
|
|
174
|
+
R extends `${infer F}OrderedAndPaginated` ? F :
|
|
175
|
+
R extends `${infer F}Paginated` ? F :
|
|
176
|
+
R extends `${infer F}Ordered` ? F :
|
|
177
|
+
R extends `${infer F}SkipDuplicates` ? F : R;
|
|
178
|
+
|
|
179
179
|
/**
|
|
180
180
|
* Opções adicionais aceitas pelos métodos do repository.
|
|
181
181
|
*
|
|
@@ -198,54 +198,54 @@ export type MethodOptions<S> = {
|
|
|
198
198
|
* Versão de `MethodOptions` derivada de um mapa de select models.
|
|
199
199
|
*/
|
|
200
200
|
export type MethodOptionsModel<T> = MethodOptions<keyof T | false>;
|
|
201
|
-
|
|
202
|
-
type MethodFn<MethodName extends string, T, M extends Prisma.ModelName, R extends string, SelectModels, DefaultSelect extends keyof SelectModels | false, I> =
|
|
203
|
-
<S extends keyof SelectModels | false = DefaultSelect>(...args: [...ExtractFields<T, CleanFields<R>, I>, ...ExtraArgs<MethodName, R, I>, options?: MethodOptions<S>]) => Promise<ResolveReturnType<MethodName, SelectedModel<M, S, SelectModels>>>;
|
|
204
|
-
|
|
205
|
-
type GetMappedMethod<K extends string, MethodConf> =
|
|
206
|
-
K extends `findBy${string}` ? (MethodConf extends { fbMode: 'one' } ? 'findByOne' : 'findByList') :
|
|
207
|
-
K extends `existsBy${string}` ? 'existsBy' :
|
|
208
|
-
K extends `findUniqueBy${string}` ? 'findUnique' :
|
|
209
|
-
K extends `findFirstBy${string}` | `findFirst${string}` ? 'findFirst' :
|
|
210
|
-
K extends `findManyBy${string}` | `findMany${string}` ? 'findMany' :
|
|
211
|
-
K extends `createManyAndReturn${string}` ? 'createManyAndReturn' :
|
|
212
|
-
K extends `createMany${string}` ? 'createMany' :
|
|
213
|
-
K extends `create${string}` ? 'create' :
|
|
214
|
-
K extends `updateManyAndReturnBy${string}` ? 'updateManyAndReturnBy' :
|
|
215
|
-
K extends `updateManyBy${string}` ? 'updateManyBy' :
|
|
216
|
-
K extends `updateBy${string}` ? 'updateBy' :
|
|
217
|
-
K extends `upsertBy${string}` ? 'upsertBy' :
|
|
218
|
-
K extends `deleteManyBy${string}` ? 'deleteManyBy' :
|
|
219
|
-
K extends `deleteBy${string}` ? 'deleteBy' :
|
|
220
|
-
K extends `countBy${string}` | `count${string}` ? 'count' :
|
|
221
|
-
K extends `findListWhere${string}` ? 'findListWhere' :
|
|
222
|
-
K extends `findWhere${string}` ? 'findWhere' :
|
|
223
|
-
never;
|
|
224
|
-
|
|
225
|
-
type ExtractPatternBase<K extends string> =
|
|
226
|
-
K extends `${string}By${infer R}` ? R :
|
|
227
|
-
K extends `findFirst${infer R}` | `findMany${infer R}` | `createManyAndReturn${infer R}` | `createMany${infer R}` | `create${infer R}` | `count${infer R}` | `findWhere${infer R}` | `findListWhere${infer R}` ? R : '';
|
|
228
|
-
|
|
229
|
-
type MethodFactory<T, M extends Prisma.ModelName, K extends string, SelectModels, DefaultSelect extends keyof SelectModels | false, I, MethodConf> =
|
|
230
|
-
MethodFn<GetMappedMethod<K, MethodConf>, T, M, ExtractPatternBase<K>, SelectModels, DefaultSelect, I>;
|
|
231
|
-
|
|
232
|
-
type ResolveSelectModel<MethodConf, GlobalConf, SelectModels> =
|
|
233
|
-
MethodConf extends { selectModel: infer S } ? (S extends false ? false : S extends keyof SelectModels ? S : never) :
|
|
234
|
-
GlobalConf extends { defaultSelectModel: infer D } ? (D extends keyof SelectModels ? D : never) : never;
|
|
235
|
-
|
|
236
|
-
type ExtractPkName<T, Config> = Config extends { pkName: infer PK } ? (PK extends keyof T ? PK : never) : never;
|
|
237
|
-
type ExtractSelectModels<Config> = Config extends { selectModels: infer SM } ? SM : {};
|
|
238
|
-
type ExtractDefaultSelect<Config> = Config extends { defaultSelectModel: infer D } ? D : never;
|
|
239
|
-
type ExtractRelations<Config> = Config extends { relations: infer R } ? (R extends object ? R : {}) : {};
|
|
240
|
-
|
|
241
|
-
type DynamicMethods<T, M extends Prisma.ModelName, Config, I> = Config extends { methods: infer Methods }
|
|
242
|
-
? {
|
|
243
|
-
[K in keyof Methods as Methods[K] extends { map: true } ? K : never]: K extends string
|
|
244
|
-
? MethodFactory<T, M, Methods[K] extends { proxyTo: infer P extends string } ? P : K, ExtractSelectModels<Config>, ResolveSelectModel<Methods[K], Config, ExtractSelectModels<Config>>, I, Methods[K]>
|
|
245
|
-
: never;
|
|
246
|
-
}
|
|
247
|
-
: {};
|
|
248
|
-
|
|
201
|
+
|
|
202
|
+
type MethodFn<MethodName extends string, T, M extends Prisma.ModelName, R extends string, SelectModels, DefaultSelect extends keyof SelectModels | false, I> =
|
|
203
|
+
<S extends keyof SelectModels | false = DefaultSelect>(...args: [...ExtractFields<T, CleanFields<R>, I>, ...ExtraArgs<MethodName, R, I>, options?: MethodOptions<S>]) => Promise<ResolveReturnType<MethodName, SelectedModel<M, S, SelectModels>>>;
|
|
204
|
+
|
|
205
|
+
type GetMappedMethod<K extends string, MethodConf> =
|
|
206
|
+
K extends `findBy${string}` ? (MethodConf extends { fbMode: 'one' } ? 'findByOne' : 'findByList') :
|
|
207
|
+
K extends `existsBy${string}` ? 'existsBy' :
|
|
208
|
+
K extends `findUniqueBy${string}` ? 'findUnique' :
|
|
209
|
+
K extends `findFirstBy${string}` | `findFirst${string}` ? 'findFirst' :
|
|
210
|
+
K extends `findManyBy${string}` | `findMany${string}` ? 'findMany' :
|
|
211
|
+
K extends `createManyAndReturn${string}` ? 'createManyAndReturn' :
|
|
212
|
+
K extends `createMany${string}` ? 'createMany' :
|
|
213
|
+
K extends `create${string}` ? 'create' :
|
|
214
|
+
K extends `updateManyAndReturnBy${string}` ? 'updateManyAndReturnBy' :
|
|
215
|
+
K extends `updateManyBy${string}` ? 'updateManyBy' :
|
|
216
|
+
K extends `updateBy${string}` ? 'updateBy' :
|
|
217
|
+
K extends `upsertBy${string}` ? 'upsertBy' :
|
|
218
|
+
K extends `deleteManyBy${string}` ? 'deleteManyBy' :
|
|
219
|
+
K extends `deleteBy${string}` ? 'deleteBy' :
|
|
220
|
+
K extends `countBy${string}` | `count${string}` ? 'count' :
|
|
221
|
+
K extends `findListWhere${string}` ? 'findListWhere' :
|
|
222
|
+
K extends `findWhere${string}` ? 'findWhere' :
|
|
223
|
+
never;
|
|
224
|
+
|
|
225
|
+
type ExtractPatternBase<K extends string> =
|
|
226
|
+
K extends `${string}By${infer R}` ? R :
|
|
227
|
+
K extends `findFirst${infer R}` | `findMany${infer R}` | `createManyAndReturn${infer R}` | `createMany${infer R}` | `create${infer R}` | `count${infer R}` | `findWhere${infer R}` | `findListWhere${infer R}` ? R : '';
|
|
228
|
+
|
|
229
|
+
type MethodFactory<T, M extends Prisma.ModelName, K extends string, SelectModels, DefaultSelect extends keyof SelectModels | false, I, MethodConf> =
|
|
230
|
+
MethodFn<GetMappedMethod<K, MethodConf>, T, M, ExtractPatternBase<K>, SelectModels, DefaultSelect, I>;
|
|
231
|
+
|
|
232
|
+
type ResolveSelectModel<MethodConf, GlobalConf, SelectModels> =
|
|
233
|
+
MethodConf extends { selectModel: infer S } ? (S extends false ? false : S extends keyof SelectModels ? S : never) :
|
|
234
|
+
GlobalConf extends { defaultSelectModel: infer D } ? (D extends keyof SelectModels ? D : never) : never;
|
|
235
|
+
|
|
236
|
+
type ExtractPkName<T, Config> = Config extends { pkName: infer PK } ? (PK extends keyof T ? PK : never) : never;
|
|
237
|
+
type ExtractSelectModels<Config> = Config extends { selectModels: infer SM } ? SM : {};
|
|
238
|
+
type ExtractDefaultSelect<Config> = Config extends { defaultSelectModel: infer D } ? D : never;
|
|
239
|
+
type ExtractRelations<Config> = Config extends { relations: infer R } ? (R extends object ? R : {}) : {};
|
|
240
|
+
|
|
241
|
+
type DynamicMethods<T, M extends Prisma.ModelName, Config, I> = Config extends { methods: infer Methods }
|
|
242
|
+
? {
|
|
243
|
+
[K in keyof Methods as Methods[K] extends { map: true } ? K : never]: K extends string
|
|
244
|
+
? MethodFactory<T, M, Methods[K] extends { proxyTo: infer P extends string } ? P : K, ExtractSelectModels<Config>, ResolveSelectModel<Methods[K], Config, ExtractSelectModels<Config>>, I, Methods[K]>
|
|
245
|
+
: never;
|
|
246
|
+
}
|
|
247
|
+
: {};
|
|
248
|
+
|
|
249
249
|
/**
|
|
250
250
|
* Agrupa os principais tipos de input do Prisma derivados de um modelo.
|
|
251
251
|
*
|
|
@@ -358,66 +358,70 @@ export type BuildConfig<TSelectKeys extends PropertyKey = string> = {
|
|
|
358
358
|
save?: BaseMethodConfig<TSelectKeys>;
|
|
359
359
|
};
|
|
360
360
|
};
|
|
361
|
-
|
|
362
|
-
type ResolveMethodDefaultSelect<Config, C, Method extends 'get' | 'remove' | 'save', TSelects = ExtractSelectModels<Config>> =
|
|
363
|
-
C extends { baseMethods?: { [_ in Method]?: { defaultSelect?: infer D } } }
|
|
364
|
-
? D extends keyof TSelects
|
|
365
|
-
? D
|
|
366
|
-
: ExtractDefaultSelect<Config> extends keyof TSelects
|
|
367
|
-
? ExtractDefaultSelect<Config>
|
|
368
|
-
: false
|
|
369
|
-
: ExtractDefaultSelect<Config> extends keyof TSelects
|
|
370
|
-
? ExtractDefaultSelect<Config>
|
|
371
|
-
: false;
|
|
372
|
-
|
|
373
|
-
type ResolveCurrentReturn<M extends Prisma.ModelName, Models, S, D> =
|
|
374
|
-
[S] extends [false]
|
|
375
|
-
? FullModelType<M>
|
|
376
|
-
: [S] extends [never]
|
|
377
|
-
? ([D] extends [never] ? FullModelType<M> : SelectedModel<M, D, Models>)
|
|
378
|
-
: SelectedModel<M, S, Models>;
|
|
379
|
-
|
|
380
|
-
type RefineSaveResult<R, O> = {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
}
|
|
403
|
-
|
|
361
|
+
|
|
362
|
+
type ResolveMethodDefaultSelect<Config, C, Method extends 'get' | 'remove' | 'save', TSelects = ExtractSelectModels<Config>> =
|
|
363
|
+
C extends { baseMethods?: { [_ in Method]?: { defaultSelect?: infer D } } }
|
|
364
|
+
? D extends keyof TSelects
|
|
365
|
+
? D
|
|
366
|
+
: ExtractDefaultSelect<Config> extends keyof TSelects
|
|
367
|
+
? ExtractDefaultSelect<Config>
|
|
368
|
+
: false
|
|
369
|
+
: ExtractDefaultSelect<Config> extends keyof TSelects
|
|
370
|
+
? ExtractDefaultSelect<Config>
|
|
371
|
+
: false;
|
|
372
|
+
|
|
373
|
+
type ResolveCurrentReturn<M extends Prisma.ModelName, Models, S, D> =
|
|
374
|
+
[S] extends [false]
|
|
375
|
+
? FullModelType<M>
|
|
376
|
+
: [S] extends [never]
|
|
377
|
+
? ([D] extends [never] ? FullModelType<M> : SelectedModel<M, D, Models>)
|
|
378
|
+
: SelectedModel<M, S, Models>;
|
|
379
|
+
|
|
380
|
+
type RefineSaveResult<R, O> = {
|
|
381
|
+
[K in keyof R]: K extends keyof O
|
|
382
|
+
? (undefined extends O[K] ? R[K] : null extends O[K] ? R[K] : NonNullable<R[K]>)
|
|
383
|
+
: R[K];
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
type InjectedGet<
|
|
387
|
+
T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined,
|
|
388
|
+
TSelects = ExtractSelectModels<Config>,
|
|
389
|
+
TDefault = ExtractDefaultSelect<Config>,
|
|
390
|
+
TPk = ExtractPkName<T, Config>
|
|
391
|
+
> = C extends { baseMethods: { get: { active: false } } } ? {} : {
|
|
392
|
+
get<S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'get', TSelects>>(
|
|
393
|
+
pk: T[TPk extends keyof T ? TPk : never], options?: MethodOptions<S>
|
|
394
|
+
): Promise<ResolveCurrentReturn<M, TSelects, S, TDefault> | null>;
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
type InjectedRemove<
|
|
398
|
+
T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined,
|
|
399
|
+
TSelects = ExtractSelectModels<Config>,
|
|
400
|
+
TDefault = ExtractDefaultSelect<Config>,
|
|
401
|
+
TPk = ExtractPkName<T, Config>
|
|
402
|
+
> = C extends { baseMethods: { remove: { active: false } } } ? {} : {
|
|
403
|
+
remove<S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'remove', TSelects>>(
|
|
404
|
+
pk: T[TPk extends keyof T ? TPk : never], options?: MethodOptions<S>
|
|
405
|
+
): Promise<ResolveCurrentReturn<M, TSelects, S, TDefault>>;
|
|
406
|
+
};
|
|
407
|
+
|
|
404
408
|
/**
|
|
405
409
|
* Versão distributiva de `Omit`, preservando unions ao remover propriedades.
|
|
406
410
|
*/
|
|
407
411
|
export type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
|
|
408
|
-
type ExtractUnionProp<T, K extends PropertyKey> = T extends any ? (K extends keyof T ? T[K] : never) : never;
|
|
409
|
-
|
|
410
|
-
type ExtractNestedCreateInput<M extends Prisma.ModelName, K extends PropertyKey> =
|
|
411
|
-
NonNullable<ExtractUnionProp<PrismaModelInputs<M>['createInput'], K>> extends { create?: infer C }
|
|
412
|
-
? Exclude<C, any[]>
|
|
413
|
-
: never;
|
|
414
|
-
|
|
415
|
-
type RelationPayload<TField, TRelationConfig, M extends Prisma.ModelName, K extends PropertyKey> = NonNullable<TField> extends any[]
|
|
416
|
-
? (ExtractNestedCreateInput<M, K>)[]
|
|
417
|
-
: NonNullable<TField> extends object
|
|
418
|
-
? ExtractNestedCreateInput<M, K> | (TRelationConfig extends { mode: 'oto'; restriction: 'set' } | { mode: 'mto'; nullAble: true } ? null : never)
|
|
419
|
-
: never;
|
|
420
|
-
|
|
412
|
+
type ExtractUnionProp<T, K extends PropertyKey> = T extends any ? (K extends keyof T ? T[K] : never) : never;
|
|
413
|
+
|
|
414
|
+
type ExtractNestedCreateInput<M extends Prisma.ModelName, K extends PropertyKey> =
|
|
415
|
+
NonNullable<ExtractUnionProp<PrismaModelInputs<M>['createInput'], K>> extends { create?: infer C }
|
|
416
|
+
? Exclude<C, any[]>
|
|
417
|
+
: never;
|
|
418
|
+
|
|
419
|
+
type RelationPayload<TField, TRelationConfig, M extends Prisma.ModelName, K extends PropertyKey> = NonNullable<TField> extends any[]
|
|
420
|
+
? (ExtractNestedCreateInput<M, K>)[]
|
|
421
|
+
: NonNullable<TField> extends object
|
|
422
|
+
? ExtractNestedCreateInput<M, K> | (TRelationConfig extends { mode: 'oto'; restriction: 'set' } | { mode: 'mto'; nullAble: true } ? null : never)
|
|
423
|
+
: never;
|
|
424
|
+
|
|
421
425
|
/**
|
|
422
426
|
* Payload aceito pelo `save` quando o repository possui relações configuradas.
|
|
423
427
|
*
|
|
@@ -428,27 +432,27 @@ export type UpsertWithRelations<T, M extends Prisma.ModelName, TRelations> =
|
|
|
428
432
|
DistributiveOmit<ModelUpsertInput<M>, keyof TRelations> & {
|
|
429
433
|
[K in Extract<keyof TRelations, keyof T>]?: RelationPayload<T[K], TRelations[K], M, K>;
|
|
430
434
|
};
|
|
431
|
-
|
|
432
|
-
type InjectedSave<
|
|
433
|
-
T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined,
|
|
434
|
-
TSelects = ExtractSelectModels<Config>,
|
|
435
|
-
TDefault = ExtractDefaultSelect<Config>,
|
|
436
|
-
TRelations = ExtractRelations<Config>
|
|
437
|
-
> = C extends { baseMethods: { save: { active: false } } } ? {} : {
|
|
438
|
-
save<
|
|
439
|
-
O extends UpsertWithRelations<T, M, TRelations>,
|
|
440
|
-
S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'save', TSelects>
|
|
441
|
-
>(
|
|
442
|
-
obj: O & UpsertWithRelations<T, M, TRelations>,
|
|
443
|
-
options?: MethodOptions<S>
|
|
444
|
-
): Promise<RefineSaveResult<ResolveCurrentReturn<M, TSelects, S, TDefault>, O>>;
|
|
445
|
-
};
|
|
446
|
-
|
|
447
|
-
type InjectedBaseMethods<T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined> =
|
|
448
|
-
InjectedGet<T, M, Config, C> &
|
|
449
|
-
InjectedRemove<T, M, Config, C> &
|
|
450
|
-
InjectedSave<T, M, Config, C>;
|
|
451
|
-
|
|
435
|
+
|
|
436
|
+
type InjectedSave<
|
|
437
|
+
T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined,
|
|
438
|
+
TSelects = ExtractSelectModels<Config>,
|
|
439
|
+
TDefault = ExtractDefaultSelect<Config>,
|
|
440
|
+
TRelations = ExtractRelations<Config>
|
|
441
|
+
> = C extends { baseMethods: { save: { active: false } } } ? {} : {
|
|
442
|
+
save<
|
|
443
|
+
O extends UpsertWithRelations<T, M, TRelations>,
|
|
444
|
+
S extends keyof TSelects | false = ResolveMethodDefaultSelect<Config, C, 'save', TSelects>
|
|
445
|
+
>(
|
|
446
|
+
obj: O & UpsertWithRelations<T, M, TRelations>,
|
|
447
|
+
options?: MethodOptions<S>
|
|
448
|
+
): Promise<RefineSaveResult<ResolveCurrentReturn<M, TSelects, S, TDefault>, O>>;
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
type InjectedBaseMethods<T, M extends Prisma.ModelName, Config, C extends BuildConfig<any> | undefined> =
|
|
452
|
+
InjectedGet<T, M, Config, C> &
|
|
453
|
+
InjectedRemove<T, M, Config, C> &
|
|
454
|
+
InjectedSave<T, M, Config, C>;
|
|
455
|
+
|
|
452
456
|
/**
|
|
453
457
|
* Infere automaticamente a configuração de relação possível a partir de um campo.
|
|
454
458
|
*/
|
|
@@ -465,9 +469,9 @@ export type ExtractRelationConfig<TField> = NonNullable<TField> extends infer No
|
|
|
465
469
|
export type RepositoryRelations<T> = {
|
|
466
470
|
[K in keyof T as ExtractRelationConfig<T[K]> extends never ? never : K]?: ExtractRelationConfig<T[K]>;
|
|
467
471
|
};
|
|
468
|
-
|
|
469
|
-
type AnySelect<M extends Prisma.ModelName> = Prisma.TypeMap['model'][M]['operations']['findMany']['args']['select'];
|
|
470
|
-
|
|
472
|
+
|
|
473
|
+
type AnySelect<M extends Prisma.ModelName> = Prisma.TypeMap['model'][M]['operations']['findMany']['args']['select'];
|
|
474
|
+
|
|
471
475
|
/**
|
|
472
476
|
* Configuração principal usada em `setupVSRepo<T, M>()(config)`.
|
|
473
477
|
*
|
|
@@ -567,7 +571,7 @@ export declare function setupVSRepo<T extends object, M extends Prisma.ModelName
|
|
|
567
571
|
const SM extends Record<string, SelectModel<M>>,
|
|
568
572
|
const Config extends RepoConfig<T, M, SM>
|
|
569
573
|
>(
|
|
570
|
-
config: Config extends ValidateRepoConfig<T, M, Config>
|
|
571
|
-
? Config
|
|
572
|
-
: ValidateRepoConfig<T, M, Config>
|
|
573
|
-
) => VSRepository<T, M, Config>;
|
|
574
|
+
config: Config extends ValidateRepoConfig<T, M, Config>
|
|
575
|
+
? Config
|
|
576
|
+
: ValidateRepoConfig<T, M, Config>
|
|
577
|
+
) => VSRepository<T, M, Config>;
|