@drizzle-graphql-suite/client 0.7.0 → 0.8.1
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/infer.d.ts +22 -6
- package/package.json +1 -1
- package/types.d.ts +1 -0
package/infer.d.ts
CHANGED
|
@@ -9,9 +9,10 @@ type ExtractTables<TSchema> = {
|
|
|
9
9
|
type FindRelationConfig<TSchema, TTableName extends string> = {
|
|
10
10
|
[K in keyof TSchema]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;
|
|
11
11
|
}[keyof TSchema];
|
|
12
|
-
type MapRelation<T> = T extends One<infer N, infer
|
|
12
|
+
type MapRelation<T> = T extends One<infer N, infer TIsNullable> ? {
|
|
13
13
|
entity: N;
|
|
14
14
|
type: 'one';
|
|
15
|
+
required: TIsNullable;
|
|
15
16
|
} : T extends Many<infer N> ? {
|
|
16
17
|
entity: N;
|
|
17
18
|
type: 'many';
|
|
@@ -35,10 +36,25 @@ type ScalarFilterOps<T> = {
|
|
|
35
36
|
isNull?: boolean | null;
|
|
36
37
|
isNotNull?: boolean | null;
|
|
37
38
|
};
|
|
38
|
-
type
|
|
39
|
+
type ScalarColumnFilters<TFields> = {
|
|
39
40
|
[K in keyof TFields]?: ScalarFilterOps<NonNullable<TFields[K]>>;
|
|
40
|
-
}
|
|
41
|
-
|
|
41
|
+
};
|
|
42
|
+
type ManyRelationFilter<TFilter> = {
|
|
43
|
+
some?: TFilter;
|
|
44
|
+
every?: TFilter;
|
|
45
|
+
none?: TFilter;
|
|
46
|
+
};
|
|
47
|
+
type IsResolvableRelation<TSchema, TRel> = TRel extends {
|
|
48
|
+
entity: infer E;
|
|
49
|
+
} ? E extends string ? KeyForDbName<TSchema, E> extends keyof ExtractTables<TSchema> ? true : false : false : false;
|
|
50
|
+
type InferRelationFilterFields<TSchema, TRels> = {
|
|
51
|
+
[K in keyof TRels as IsResolvableRelation<TSchema, TRels[K]> extends true ? K : never]?: TRels[K] extends {
|
|
52
|
+
entity: infer E;
|
|
53
|
+
type: infer TRelType;
|
|
54
|
+
} ? E extends string ? KeyForDbName<TSchema, E> extends infer RK ? RK extends keyof ExtractTables<TSchema> ? ExtractTables<TSchema>[RK] extends infer TTarget ? TTarget extends Table ? TRelType extends 'many' ? ManyRelationFilter<InferEntityFilters<TSchema, TTarget>> : InferEntityFilters<TSchema, TTarget> : never : never : never : never : never : never;
|
|
55
|
+
};
|
|
56
|
+
type InferEntityFilters<TSchema, T extends Table> = ScalarColumnFilters<WireFormat<T['$inferSelect']>> & InferRelationFilterFields<TSchema, InferRelationDefs<TSchema, TableDbName<T>>> & {
|
|
57
|
+
OR?: InferEntityFilters<TSchema, T>[];
|
|
42
58
|
};
|
|
43
59
|
type InferInsertInput<T> = T extends Table ? WireFormat<T['$inferInsert']> : never;
|
|
44
60
|
type InferUpdateInput<T> = T extends Table ? {
|
|
@@ -67,7 +83,7 @@ type ResolveRelationDefs<TSchema, TRels> = {
|
|
|
67
83
|
[K in keyof TRels]: TRels[K] extends {
|
|
68
84
|
entity: infer E;
|
|
69
85
|
type: infer T;
|
|
70
|
-
} ? E extends string ? {
|
|
86
|
+
} ? E extends string ? Omit<TRels[K], 'entity'> & {
|
|
71
87
|
entity: ResolveRelationEntity<TSchema, E>;
|
|
72
88
|
type: T;
|
|
73
89
|
} : TRels[K] : TRels[K];
|
|
@@ -75,7 +91,7 @@ type ResolveRelationDefs<TSchema, TRels> = {
|
|
|
75
91
|
type BuildEntityDef<TSchema, T> = T extends Table ? {
|
|
76
92
|
fields: WireFormat<T['$inferSelect']>;
|
|
77
93
|
relations: ResolveRelationDefs<TSchema, InferRelationDefs<TSchema, TableDbName<T>>>;
|
|
78
|
-
filters:
|
|
94
|
+
filters: InferEntityFilters<TSchema, T>;
|
|
79
95
|
insertInput: InferInsertInput<T>;
|
|
80
96
|
updateInput: InferUpdateInput<T>;
|
|
81
97
|
orderBy: InferOrderBy<T>;
|
package/package.json
CHANGED