@taylordb/query-builder 0.8.0 → 0.9.0
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/dist/cjs/@types/insert.d.ts +13 -4
- package/dist/cjs/@types/query-builder.d.ts +2 -2
- package/dist/cjs/@types/type-helpers.d.ts +3 -3
- package/dist/cjs/@types/update.d.ts +8 -3
- package/dist/cjs/__tests__/query-builder.spec.js +1 -1
- package/dist/cjs/__tests__/query-builder.spec.js.map +1 -1
- package/dist/cjs/__tests__/taylorclient.types.d.ts +57 -51
- package/dist/cjs/executor.js +1 -1
- package/dist/cjs/executor.js.map +1 -1
- package/dist/cjs/query-builder.d.ts +1 -1
- package/dist/cjs/selection-builder.d.ts +1 -1
- package/dist/cjs/where-query-builder.d.ts +2 -2
- package/dist/esm/@types/insert.d.ts +13 -4
- package/dist/esm/@types/query-builder.d.ts +2 -2
- package/dist/esm/@types/type-helpers.d.ts +3 -3
- package/dist/esm/@types/update.d.ts +8 -3
- package/dist/esm/__tests__/query-builder.spec.js +1 -1
- package/dist/esm/__tests__/query-builder.spec.js.map +1 -1
- package/dist/esm/__tests__/taylorclient.types.d.ts +57 -51
- package/dist/esm/executor.js +1 -1
- package/dist/esm/executor.js.map +1 -1
- package/dist/esm/query-builder.d.ts +1 -1
- package/dist/esm/selection-builder.d.ts +1 -1
- package/dist/esm/where-query-builder.d.ts +2 -2
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { QueryNode } from './internal-types.js';
|
|
1
|
+
import { CreateMutationMetaData, MetadataWithTableName } from '@taylordb/shared';
|
|
2
|
+
import { AnyDB, QueryNode } from './internal-types.js';
|
|
3
3
|
export type InsertNode = MetadataWithTableName<CreateMutationMetaData> & {
|
|
4
4
|
returning: (string | QueryNode)[];
|
|
5
5
|
};
|
|
6
|
-
|
|
7
|
-
[K in keyof T]
|
|
6
|
+
type RequiredKeys<T extends AnyDB[string]> = {
|
|
7
|
+
[K in keyof T]: T[K]['isRequired'] extends true ? T[K]['insert'] extends never ? never : K : never;
|
|
8
|
+
}[keyof T];
|
|
9
|
+
type OptionalKeys<T extends AnyDB[string]> = {
|
|
10
|
+
[K in keyof T]: T[K]['isRequired'] extends false ? T[K]['insert'] extends never ? never : K : never;
|
|
11
|
+
}[keyof T];
|
|
12
|
+
export type Insertable<T extends AnyDB[string]> = {
|
|
13
|
+
[K in RequiredKeys<T>]: T[K]['insert'];
|
|
14
|
+
} & {
|
|
15
|
+
[K in OptionalKeys<T>]?: T[K]['insert'];
|
|
8
16
|
};
|
|
17
|
+
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LinkColumnType } from '@taylordb/shared';
|
|
2
2
|
export type NonLinkColumnNames<T> = {
|
|
3
|
-
[K in keyof T]: T[K] extends LinkColumnType<any> ? never : K;
|
|
3
|
+
[K in keyof T]: T[K] extends LinkColumnType<any, any> ? never : K;
|
|
4
4
|
}[keyof T];
|
|
5
5
|
export type LinkColumnNames<T> = {
|
|
6
|
-
[K in keyof T]: T[K] extends LinkColumnType<any> ? K : never;
|
|
6
|
+
[K in keyof T]: T[K] extends LinkColumnType<any, any> ? K : never;
|
|
7
7
|
}[keyof T];
|
|
8
8
|
export type ColumnNames<T> = keyof T;
|
|
@@ -2,8 +2,8 @@ import { ColumnType, LinkColumnType } from '@taylordb/shared';
|
|
|
2
2
|
import { QueryBuilder } from '../query-builder.js';
|
|
3
3
|
import { AnyDB } from './internal-types.js';
|
|
4
4
|
import { LinkColumnNames, NonLinkColumnNames } from './query-builder.js';
|
|
5
|
-
export type InferDataType<TColumn
|
|
6
|
-
export type TableShape<TTable> = {
|
|
5
|
+
export type InferDataType<TColumn extends ColumnType<any, any, any, any, any>> = TColumn['isRequired'] extends true ? TColumn['raw'] : TColumn['raw'] | undefined;
|
|
6
|
+
export type TableShape<TTable extends AnyDB[string]> = {
|
|
7
7
|
[K in keyof TTable]: InferDataType<TTable[K]>;
|
|
8
8
|
};
|
|
9
9
|
type InferSubqueryResult<TSubquery> = TSubquery extends QueryBuilder<any, any, infer TSelection, any> ? TSelection[] : never;
|
|
@@ -18,7 +18,7 @@ export type ResolveSelection<DB extends AnyDB, TName extends keyof DB, TFields e
|
|
|
18
18
|
}[number]>;
|
|
19
19
|
export type ResolveWithPlain<DB extends AnyDB, TName extends keyof DB, TRelations extends (LinkColumnNames<DB[TName]> & string) | readonly (LinkColumnNames<DB[TName]> & string)[], TCurrentSelection> = TCurrentSelection & UnionToIntersection<{
|
|
20
20
|
[K in TRelations extends readonly any[] ? TRelations[number] : TRelations]: {
|
|
21
|
-
[P in K]: TableShape<DB[DB[TName][P] extends LinkColumnType<infer L> ? L : never]>[];
|
|
21
|
+
[P in K]: TableShape<DB[DB[TName][P] extends LinkColumnType<infer L, any> ? L : never]>[];
|
|
22
22
|
};
|
|
23
23
|
}[TRelations extends readonly any[] ? TRelations[number] : TRelations]>;
|
|
24
24
|
export type ResolveWithObject<TRelations extends Record<string, (qb: any) => QueryBuilder<any, any, any, any>>, TCurrentSelection> = TCurrentSelection & {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MetadataWithTableName, UpdateMutationMetaData } from '@taylordb/shared';
|
|
2
|
+
import { AnyDB } from './internal-types';
|
|
2
3
|
export type UpdateNode = MetadataWithTableName<UpdateMutationMetaData>;
|
|
3
|
-
|
|
4
|
-
[K in keyof T]
|
|
4
|
+
type NotUpdatableKeys<T extends AnyDB[string]> = {
|
|
5
|
+
[K in keyof T]: T[K]['update'] extends never ? K : never;
|
|
6
|
+
}[keyof T];
|
|
7
|
+
export type Updatable<T extends AnyDB[string]> = {
|
|
8
|
+
[K in keyof Omit<T, NotUpdatableKeys<T>>]?: T[K]['update'];
|
|
5
9
|
};
|
|
10
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":";;AAAA,0CAAiD;
|
|
1
|
+
{"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,19 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
type IsWithinOperatorValue = 'pastWeek' | 'pastMonth' | 'pastYear' | 'nextWeek' | 'nextMonth' | 'nextYear' | 'daysFromNow' | 'daysAgo' | 'currentWeek' | 'currentMonth' | 'currentYear';
|
|
8
8
|
type DefaultDateFilterValue = ('today' | 'tomorrow' | 'yesterday' | 'oneWeekAgo' | 'oneWeekFromNow' | 'oneMonthAgo' | 'oneMonthFromNow') | ['exactDay' | 'exactTimestamp', string] | ['daysAgo' | 'daysFromNow', number];
|
|
9
|
-
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
} = object, A extends {
|
|
12
|
-
[key: string]: any;
|
|
13
|
-
} = object> = {
|
|
14
|
-
raw: S;
|
|
15
|
-
insert: I;
|
|
16
|
-
update: U;
|
|
17
|
-
type: T;
|
|
18
|
-
filters: F;
|
|
19
|
-
aggregations: A;
|
|
20
|
-
};
|
|
21
|
-
export type DateColumnType = ColumnType<string | undefined, string | undefined, string | undefined, 'date', {
|
|
9
|
+
type DateFilters = {
|
|
22
10
|
'=': DefaultDateFilterValue;
|
|
23
11
|
'!=': DefaultDateFilterValue;
|
|
24
12
|
'<': DefaultDateFilterValue;
|
|
@@ -31,7 +19,8 @@ export type DateColumnType = ColumnType<string | undefined, string | undefined,
|
|
|
31
19
|
};
|
|
32
20
|
isEmpty: boolean;
|
|
33
21
|
isNotEmpty: boolean;
|
|
34
|
-
}
|
|
22
|
+
};
|
|
23
|
+
type DateAggregations = {
|
|
35
24
|
empty: number;
|
|
36
25
|
filled: number;
|
|
37
26
|
unique: number;
|
|
@@ -42,8 +31,8 @@ export type DateColumnType = ColumnType<string | undefined, string | undefined,
|
|
|
42
31
|
max: number | null;
|
|
43
32
|
daysRange: number | null;
|
|
44
33
|
monthRange: number | null;
|
|
45
|
-
}
|
|
46
|
-
|
|
34
|
+
};
|
|
35
|
+
type TextFilters = {
|
|
47
36
|
'=': string;
|
|
48
37
|
'!=': string;
|
|
49
38
|
caseEqual: string;
|
|
@@ -52,34 +41,30 @@ export type TextColumnType = ColumnType<string | undefined, string | undefined,
|
|
|
52
41
|
startsWith: string;
|
|
53
42
|
endsWith: string;
|
|
54
43
|
doesNotContain: string;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
newIds: number[];
|
|
58
|
-
deletedIds: number[];
|
|
59
|
-
} | undefined, number[] | undefined, 'link', {
|
|
44
|
+
};
|
|
45
|
+
type LinkFilters = {
|
|
60
46
|
hasAnyOf: number[];
|
|
61
47
|
hasAllOf: number[];
|
|
62
48
|
isExactly: number[];
|
|
63
49
|
'=': number;
|
|
64
50
|
hasNoneOf: number[];
|
|
65
|
-
}
|
|
51
|
+
};
|
|
52
|
+
type LinkAggregations = {
|
|
66
53
|
empty: number;
|
|
67
54
|
filled: number;
|
|
68
55
|
percentEmpty: number;
|
|
69
56
|
percentFilled: number;
|
|
70
|
-
}> & {
|
|
71
|
-
linkedTo: T;
|
|
72
57
|
};
|
|
73
|
-
|
|
58
|
+
type NumberFilters = {
|
|
74
59
|
'=': number;
|
|
75
|
-
'!=': number;
|
|
76
60
|
'>': number;
|
|
77
61
|
'>=': number;
|
|
78
62
|
'<': number;
|
|
79
63
|
'<=': number;
|
|
80
64
|
hasAnyOf: number[];
|
|
81
65
|
hasNoneOf: number[];
|
|
82
|
-
}
|
|
66
|
+
};
|
|
67
|
+
type NumberAggregations = {
|
|
83
68
|
sum: number;
|
|
84
69
|
average: number;
|
|
85
70
|
median: number;
|
|
@@ -94,28 +79,57 @@ export type NumberColumnType = ColumnType<number | undefined, number | undefined
|
|
|
94
79
|
percentEmpty: number;
|
|
95
80
|
percentFilled: number;
|
|
96
81
|
percentUnique: number;
|
|
97
|
-
}
|
|
98
|
-
|
|
82
|
+
};
|
|
83
|
+
type CheckboxFilters = {
|
|
99
84
|
'=': number;
|
|
100
|
-
}
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
*
|
|
88
|
+
* Column types
|
|
89
|
+
*
|
|
90
|
+
*/
|
|
91
|
+
export type ColumnType<S, U, I, R extends boolean, F extends {
|
|
92
|
+
[key: string]: any;
|
|
93
|
+
} = object, A extends {
|
|
94
|
+
[key: string]: any;
|
|
95
|
+
} = object> = {
|
|
96
|
+
raw: S;
|
|
97
|
+
insert: I;
|
|
98
|
+
update: U;
|
|
99
|
+
filters: F;
|
|
100
|
+
aggregations: A;
|
|
101
|
+
isRequired: R;
|
|
102
|
+
};
|
|
103
|
+
export type DateColumnType<R extends boolean> = ColumnType<string, string, string, R, DateFilters, DateAggregations>;
|
|
104
|
+
export type TextColumnType<R extends boolean> = ColumnType<string, string, string, R, TextFilters>;
|
|
105
|
+
export type LinkColumnType<T extends string, R extends boolean> = ColumnType<object, number | number[] | {
|
|
106
|
+
newIds: number[];
|
|
107
|
+
deletedIds: number[];
|
|
108
|
+
}, number | number[], R, LinkFilters, LinkAggregations> & {
|
|
109
|
+
linkedTo: T;
|
|
110
|
+
};
|
|
111
|
+
export type NumberColumnType<R extends boolean> = ColumnType<number, number, number, R, NumberFilters, NumberAggregations>;
|
|
112
|
+
export type CheckboxColumnType<R extends boolean> = ColumnType<boolean, boolean, boolean, R, CheckboxFilters>;
|
|
113
|
+
export type AutoGeneratedNumberColumnType = ColumnType<number, never, never, false, NumberFilters, NumberAggregations>;
|
|
114
|
+
export type AutoGeneratedDateColumnType = ColumnType<string, never, never, false, DateFilters, DateAggregations>;
|
|
101
115
|
export type SelectTable = {
|
|
102
|
-
id:
|
|
103
|
-
name: TextColumnType
|
|
104
|
-
color: TextColumnType
|
|
116
|
+
id: AutoGeneratedNumberColumnType;
|
|
117
|
+
name: TextColumnType<true>;
|
|
118
|
+
color: TextColumnType<true>;
|
|
105
119
|
};
|
|
106
120
|
export type AttachmentTable = {
|
|
107
|
-
id:
|
|
108
|
-
name: TextColumnType
|
|
109
|
-
metadata: TextColumnType
|
|
110
|
-
size: NumberColumnType
|
|
111
|
-
fileType: TextColumnType
|
|
112
|
-
url: TextColumnType
|
|
121
|
+
id: AutoGeneratedNumberColumnType;
|
|
122
|
+
name: TextColumnType<true>;
|
|
123
|
+
metadata: TextColumnType<true>;
|
|
124
|
+
size: NumberColumnType<true>;
|
|
125
|
+
fileType: TextColumnType<true>;
|
|
126
|
+
url: TextColumnType<true>;
|
|
113
127
|
};
|
|
114
128
|
export type CollaboratorsTable = {
|
|
115
|
-
id:
|
|
116
|
-
name: TextColumnType
|
|
117
|
-
emailAddress: TextColumnType
|
|
118
|
-
avatar: TextColumnType
|
|
129
|
+
id: AutoGeneratedNumberColumnType;
|
|
130
|
+
name: TextColumnType<true>;
|
|
131
|
+
emailAddress: TextColumnType<true>;
|
|
132
|
+
avatar: TextColumnType<true>;
|
|
119
133
|
};
|
|
120
134
|
export interface TaylorDatabase {
|
|
121
135
|
/**
|
|
@@ -127,13 +141,5 @@ export interface TaylorDatabase {
|
|
|
127
141
|
selectTable: SelectTable;
|
|
128
142
|
attachmentTable: AttachmentTable;
|
|
129
143
|
collaboratorsTable: CollaboratorsTable;
|
|
130
|
-
customers: CustomersTable;
|
|
131
|
-
}
|
|
132
|
-
interface CustomersTable {
|
|
133
|
-
id: NumberColumnType;
|
|
134
|
-
createdAt: DateColumnType;
|
|
135
|
-
updatedAt: DateColumnType;
|
|
136
|
-
firstName: TextColumnType;
|
|
137
|
-
lastName: TextColumnType;
|
|
138
144
|
}
|
|
139
145
|
export {};
|
package/dist/cjs/executor.js
CHANGED
|
@@ -47,7 +47,7 @@ class Executor {
|
|
|
47
47
|
}
|
|
48
48
|
const jsonResponse = await response.json();
|
|
49
49
|
if (jsonResponse.errors) {
|
|
50
|
-
throw new Error(`GraphQL errors: ${
|
|
50
|
+
throw new Error(`GraphQL errors: ${jsonResponse.errors.map(error => error.message).join('\n')}`);
|
|
51
51
|
}
|
|
52
52
|
if (jsonResponse.data) {
|
|
53
53
|
const [firstKey] = Object.keys(jsonResponse.data);
|
package/dist/cjs/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":";;;AACA,uEAAgE;AAMhE,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IACD,+DAA+D;IAC/D,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;QACjE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAa,QAAQ;IACnB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,oBAAoB,CAAsB;IAE1C,YAAY,OAAe,EAAE,MAAc;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,oBAAoB,GAAG,IAAI,6CAAmB,CAAC,IAAI,EAAE;YACxD,OAAO;YACP,MAAM;YACN,QAAQ,EAAE,YAAY,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,OAAmB;QAClC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAa,EACb,SAA8B,EAC9B,OAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,EAAE;gBACvC,MAAM,EAAE,UAAU;gBAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAC9D,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3C,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export declare class QueryBuilder<DB extends AnyDB, TableName extends keyof DB,
|
|
|
18
18
|
}>;
|
|
19
19
|
with<const TArg extends (LinkColumnNames<DB[TableName]> & string) | readonly (LinkColumnNames<DB[TableName]> & string)[]>(relations: TArg): QueryBuilder<DB, TableName, ResolveWithPlain<DB, TableName, TArg, Selection>>;
|
|
20
20
|
with<const TArg extends {
|
|
21
|
-
[K in LinkColumnNames<DB[TableName]>]?: (qb: QueryBuilder<DB, DB[TableName][K] extends LinkColumnType<any> ? DB[TableName][K]['linkedTo'] : never, object, K>) => QueryBuilder<DB, any, any, any>;
|
|
21
|
+
[K in LinkColumnNames<DB[TableName]>]?: (qb: QueryBuilder<DB, DB[TableName][K] extends LinkColumnType<any, boolean> ? DB[TableName][K]['linkedTo'] : never, object, K>) => QueryBuilder<DB, any, any, any>;
|
|
22
22
|
}>(relations: TArg): QueryBuilder<DB, TableName, ResolveWithObject<TArg, Selection>>;
|
|
23
23
|
limit(count: number): QueryBuilder<DB, TableName, Selection, LinkName>;
|
|
24
24
|
offset(count: number): QueryBuilder<DB, TableName, Selection, LinkName>;
|
|
@@ -6,5 +6,5 @@ import { QueryBuilder } from './query-builder.js';
|
|
|
6
6
|
export declare class SelectionBuilder<DB extends AnyDB, CurrentTableName extends keyof DB> {
|
|
7
7
|
_executor: Executor;
|
|
8
8
|
constructor(executor: Executor);
|
|
9
|
-
useLink<LinkName extends LinkColumnNames<DB[CurrentTableName]> & string>(from: LinkName): QueryBuilder<DB, DB[CurrentTableName][LinkName] extends LinkColumnType<any> ? DB[CurrentTableName][LinkName]["linkedTo"] : never, object, LinkName>;
|
|
9
|
+
useLink<LinkName extends LinkColumnNames<DB[CurrentTableName]> & string>(from: LinkName): QueryBuilder<DB, DB[CurrentTableName][LinkName] extends LinkColumnType<any, boolean> ? DB[CurrentTableName][LinkName]["linkedTo"] : never, object, LinkName>;
|
|
10
10
|
}
|
|
@@ -6,9 +6,9 @@ export declare class FilterableQueryBuilder<DB extends AnyDB, TableName extends
|
|
|
6
6
|
_node: FilterableNode;
|
|
7
7
|
_executor: Executor;
|
|
8
8
|
constructor(node: FilterableNode, executor: Executor);
|
|
9
|
-
where<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends LinkColumnType<any> ? ((qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any> ? DB[TableName][TField]['linkedTo'] : never>) | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
9
|
+
where<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends LinkColumnType<any, boolean> ? ((qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
10
10
|
where<C extends (builder: WhereQueryBuilder<DB, TableName>) => WhereQueryBuilder<DB, TableName>>(column: C): this;
|
|
11
|
-
orWhere<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends LinkColumnType<any> ? (qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any> ? DB[TableName][TField]['linkedTo'] : never> | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
11
|
+
orWhere<TField extends ColumnNames<DB[TableName]> & string, TOperator extends keyof DB[TableName][TField]['filters']>(field: TField, operator: TOperator, value: DB[TableName][TField] extends LinkColumnType<any, boolean> ? (qb: FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never>) => FilterableQueryBuilder<DB, DB[TableName][TField] extends LinkColumnType<any, boolean> ? DB[TableName][TField]['linkedTo'] : never> | DB[TableName][TField]['filters'][TOperator] : DB[TableName][TField]['filters'][TOperator]): this;
|
|
12
12
|
orWhere<C extends (builder: WhereQueryBuilder<DB, TableName>) => WhereQueryBuilder<DB, TableName>>(column: C): this;
|
|
13
13
|
}
|
|
14
14
|
export declare class WhereQueryBuilder<DB extends AnyDB, TableName extends keyof DB> extends FilterableQueryBuilder<DB, TableName> {
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { QueryNode } from './internal-types.js';
|
|
1
|
+
import { CreateMutationMetaData, MetadataWithTableName } from '@taylordb/shared';
|
|
2
|
+
import { AnyDB, QueryNode } from './internal-types.js';
|
|
3
3
|
export type InsertNode = MetadataWithTableName<CreateMutationMetaData> & {
|
|
4
4
|
returning: (string | QueryNode)[];
|
|
5
5
|
};
|
|
6
|
-
|
|
7
|
-
[K in keyof T]
|
|
6
|
+
type RequiredKeys<T extends AnyDB[string]> = {
|
|
7
|
+
[K in keyof T]: T[K]['isRequired'] extends true ? T[K]['insert'] extends never ? never : K : never;
|
|
8
|
+
}[keyof T];
|
|
9
|
+
type OptionalKeys<T extends AnyDB[string]> = {
|
|
10
|
+
[K in keyof T]: T[K]['isRequired'] extends false ? T[K]['insert'] extends never ? never : K : never;
|
|
11
|
+
}[keyof T];
|
|
12
|
+
export type Insertable<T extends AnyDB[string]> = {
|
|
13
|
+
[K in RequiredKeys<T>]: T[K]['insert'];
|
|
14
|
+
} & {
|
|
15
|
+
[K in OptionalKeys<T>]?: T[K]['insert'];
|
|
8
16
|
};
|
|
17
|
+
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LinkColumnType } from '@taylordb/shared';
|
|
2
2
|
export type NonLinkColumnNames<T> = {
|
|
3
|
-
[K in keyof T]: T[K] extends LinkColumnType<any> ? never : K;
|
|
3
|
+
[K in keyof T]: T[K] extends LinkColumnType<any, any> ? never : K;
|
|
4
4
|
}[keyof T];
|
|
5
5
|
export type LinkColumnNames<T> = {
|
|
6
|
-
[K in keyof T]: T[K] extends LinkColumnType<any> ? K : never;
|
|
6
|
+
[K in keyof T]: T[K] extends LinkColumnType<any, any> ? K : never;
|
|
7
7
|
}[keyof T];
|
|
8
8
|
export type ColumnNames<T> = keyof T;
|
|
@@ -2,8 +2,8 @@ import { ColumnType, LinkColumnType } from '@taylordb/shared';
|
|
|
2
2
|
import { QueryBuilder } from '../query-builder.js';
|
|
3
3
|
import { AnyDB } from './internal-types.js';
|
|
4
4
|
import { LinkColumnNames, NonLinkColumnNames } from './query-builder.js';
|
|
5
|
-
export type InferDataType<TColumn
|
|
6
|
-
export type TableShape<TTable> = {
|
|
5
|
+
export type InferDataType<TColumn extends ColumnType<any, any, any, any, any>> = TColumn['isRequired'] extends true ? TColumn['raw'] : TColumn['raw'] | undefined;
|
|
6
|
+
export type TableShape<TTable extends AnyDB[string]> = {
|
|
7
7
|
[K in keyof TTable]: InferDataType<TTable[K]>;
|
|
8
8
|
};
|
|
9
9
|
type InferSubqueryResult<TSubquery> = TSubquery extends QueryBuilder<any, any, infer TSelection, any> ? TSelection[] : never;
|
|
@@ -18,7 +18,7 @@ export type ResolveSelection<DB extends AnyDB, TName extends keyof DB, TFields e
|
|
|
18
18
|
}[number]>;
|
|
19
19
|
export type ResolveWithPlain<DB extends AnyDB, TName extends keyof DB, TRelations extends (LinkColumnNames<DB[TName]> & string) | readonly (LinkColumnNames<DB[TName]> & string)[], TCurrentSelection> = TCurrentSelection & UnionToIntersection<{
|
|
20
20
|
[K in TRelations extends readonly any[] ? TRelations[number] : TRelations]: {
|
|
21
|
-
[P in K]: TableShape<DB[DB[TName][P] extends LinkColumnType<infer L> ? L : never]>[];
|
|
21
|
+
[P in K]: TableShape<DB[DB[TName][P] extends LinkColumnType<infer L, any> ? L : never]>[];
|
|
22
22
|
};
|
|
23
23
|
}[TRelations extends readonly any[] ? TRelations[number] : TRelations]>;
|
|
24
24
|
export type ResolveWithObject<TRelations extends Record<string, (qb: any) => QueryBuilder<any, any, any, any>>, TCurrentSelection> = TCurrentSelection & {
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MetadataWithTableName, UpdateMutationMetaData } from '@taylordb/shared';
|
|
2
|
+
import { AnyDB } from './internal-types';
|
|
2
3
|
export type UpdateNode = MetadataWithTableName<UpdateMutationMetaData>;
|
|
3
|
-
|
|
4
|
-
[K in keyof T]
|
|
4
|
+
type NotUpdatableKeys<T extends AnyDB[string]> = {
|
|
5
|
+
[K in keyof T]: T[K]['update'] extends never ? K : never;
|
|
6
|
+
}[keyof T];
|
|
7
|
+
export type Updatable<T extends AnyDB[string]> = {
|
|
8
|
+
[K in keyof Omit<T, NotUpdatableKeys<T>>]?: T[K]['update'];
|
|
5
9
|
};
|
|
10
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"query-builder.spec.js","sourceRoot":"","sources":["../../../src/__tests__/query-builder.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,19 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
type IsWithinOperatorValue = 'pastWeek' | 'pastMonth' | 'pastYear' | 'nextWeek' | 'nextMonth' | 'nextYear' | 'daysFromNow' | 'daysAgo' | 'currentWeek' | 'currentMonth' | 'currentYear';
|
|
8
8
|
type DefaultDateFilterValue = ('today' | 'tomorrow' | 'yesterday' | 'oneWeekAgo' | 'oneWeekFromNow' | 'oneMonthAgo' | 'oneMonthFromNow') | ['exactDay' | 'exactTimestamp', string] | ['daysAgo' | 'daysFromNow', number];
|
|
9
|
-
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
} = object, A extends {
|
|
12
|
-
[key: string]: any;
|
|
13
|
-
} = object> = {
|
|
14
|
-
raw: S;
|
|
15
|
-
insert: I;
|
|
16
|
-
update: U;
|
|
17
|
-
type: T;
|
|
18
|
-
filters: F;
|
|
19
|
-
aggregations: A;
|
|
20
|
-
};
|
|
21
|
-
export type DateColumnType = ColumnType<string | undefined, string | undefined, string | undefined, 'date', {
|
|
9
|
+
type DateFilters = {
|
|
22
10
|
'=': DefaultDateFilterValue;
|
|
23
11
|
'!=': DefaultDateFilterValue;
|
|
24
12
|
'<': DefaultDateFilterValue;
|
|
@@ -31,7 +19,8 @@ export type DateColumnType = ColumnType<string | undefined, string | undefined,
|
|
|
31
19
|
};
|
|
32
20
|
isEmpty: boolean;
|
|
33
21
|
isNotEmpty: boolean;
|
|
34
|
-
}
|
|
22
|
+
};
|
|
23
|
+
type DateAggregations = {
|
|
35
24
|
empty: number;
|
|
36
25
|
filled: number;
|
|
37
26
|
unique: number;
|
|
@@ -42,8 +31,8 @@ export type DateColumnType = ColumnType<string | undefined, string | undefined,
|
|
|
42
31
|
max: number | null;
|
|
43
32
|
daysRange: number | null;
|
|
44
33
|
monthRange: number | null;
|
|
45
|
-
}
|
|
46
|
-
|
|
34
|
+
};
|
|
35
|
+
type TextFilters = {
|
|
47
36
|
'=': string;
|
|
48
37
|
'!=': string;
|
|
49
38
|
caseEqual: string;
|
|
@@ -52,34 +41,30 @@ export type TextColumnType = ColumnType<string | undefined, string | undefined,
|
|
|
52
41
|
startsWith: string;
|
|
53
42
|
endsWith: string;
|
|
54
43
|
doesNotContain: string;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
newIds: number[];
|
|
58
|
-
deletedIds: number[];
|
|
59
|
-
} | undefined, number[] | undefined, 'link', {
|
|
44
|
+
};
|
|
45
|
+
type LinkFilters = {
|
|
60
46
|
hasAnyOf: number[];
|
|
61
47
|
hasAllOf: number[];
|
|
62
48
|
isExactly: number[];
|
|
63
49
|
'=': number;
|
|
64
50
|
hasNoneOf: number[];
|
|
65
|
-
}
|
|
51
|
+
};
|
|
52
|
+
type LinkAggregations = {
|
|
66
53
|
empty: number;
|
|
67
54
|
filled: number;
|
|
68
55
|
percentEmpty: number;
|
|
69
56
|
percentFilled: number;
|
|
70
|
-
}> & {
|
|
71
|
-
linkedTo: T;
|
|
72
57
|
};
|
|
73
|
-
|
|
58
|
+
type NumberFilters = {
|
|
74
59
|
'=': number;
|
|
75
|
-
'!=': number;
|
|
76
60
|
'>': number;
|
|
77
61
|
'>=': number;
|
|
78
62
|
'<': number;
|
|
79
63
|
'<=': number;
|
|
80
64
|
hasAnyOf: number[];
|
|
81
65
|
hasNoneOf: number[];
|
|
82
|
-
}
|
|
66
|
+
};
|
|
67
|
+
type NumberAggregations = {
|
|
83
68
|
sum: number;
|
|
84
69
|
average: number;
|
|
85
70
|
median: number;
|
|
@@ -94,28 +79,57 @@ export type NumberColumnType = ColumnType<number | undefined, number | undefined
|
|
|
94
79
|
percentEmpty: number;
|
|
95
80
|
percentFilled: number;
|
|
96
81
|
percentUnique: number;
|
|
97
|
-
}
|
|
98
|
-
|
|
82
|
+
};
|
|
83
|
+
type CheckboxFilters = {
|
|
99
84
|
'=': number;
|
|
100
|
-
}
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
*
|
|
88
|
+
* Column types
|
|
89
|
+
*
|
|
90
|
+
*/
|
|
91
|
+
export type ColumnType<S, U, I, R extends boolean, F extends {
|
|
92
|
+
[key: string]: any;
|
|
93
|
+
} = object, A extends {
|
|
94
|
+
[key: string]: any;
|
|
95
|
+
} = object> = {
|
|
96
|
+
raw: S;
|
|
97
|
+
insert: I;
|
|
98
|
+
update: U;
|
|
99
|
+
filters: F;
|
|
100
|
+
aggregations: A;
|
|
101
|
+
isRequired: R;
|
|
102
|
+
};
|
|
103
|
+
export type DateColumnType<R extends boolean> = ColumnType<string, string, string, R, DateFilters, DateAggregations>;
|
|
104
|
+
export type TextColumnType<R extends boolean> = ColumnType<string, string, string, R, TextFilters>;
|
|
105
|
+
export type LinkColumnType<T extends string, R extends boolean> = ColumnType<object, number | number[] | {
|
|
106
|
+
newIds: number[];
|
|
107
|
+
deletedIds: number[];
|
|
108
|
+
}, number | number[], R, LinkFilters, LinkAggregations> & {
|
|
109
|
+
linkedTo: T;
|
|
110
|
+
};
|
|
111
|
+
export type NumberColumnType<R extends boolean> = ColumnType<number, number, number, R, NumberFilters, NumberAggregations>;
|
|
112
|
+
export type CheckboxColumnType<R extends boolean> = ColumnType<boolean, boolean, boolean, R, CheckboxFilters>;
|
|
113
|
+
export type AutoGeneratedNumberColumnType = ColumnType<number, never, never, false, NumberFilters, NumberAggregations>;
|
|
114
|
+
export type AutoGeneratedDateColumnType = ColumnType<string, never, never, false, DateFilters, DateAggregations>;
|
|
101
115
|
export type SelectTable = {
|
|
102
|
-
id:
|
|
103
|
-
name: TextColumnType
|
|
104
|
-
color: TextColumnType
|
|
116
|
+
id: AutoGeneratedNumberColumnType;
|
|
117
|
+
name: TextColumnType<true>;
|
|
118
|
+
color: TextColumnType<true>;
|
|
105
119
|
};
|
|
106
120
|
export type AttachmentTable = {
|
|
107
|
-
id:
|
|
108
|
-
name: TextColumnType
|
|
109
|
-
metadata: TextColumnType
|
|
110
|
-
size: NumberColumnType
|
|
111
|
-
fileType: TextColumnType
|
|
112
|
-
url: TextColumnType
|
|
121
|
+
id: AutoGeneratedNumberColumnType;
|
|
122
|
+
name: TextColumnType<true>;
|
|
123
|
+
metadata: TextColumnType<true>;
|
|
124
|
+
size: NumberColumnType<true>;
|
|
125
|
+
fileType: TextColumnType<true>;
|
|
126
|
+
url: TextColumnType<true>;
|
|
113
127
|
};
|
|
114
128
|
export type CollaboratorsTable = {
|
|
115
|
-
id:
|
|
116
|
-
name: TextColumnType
|
|
117
|
-
emailAddress: TextColumnType
|
|
118
|
-
avatar: TextColumnType
|
|
129
|
+
id: AutoGeneratedNumberColumnType;
|
|
130
|
+
name: TextColumnType<true>;
|
|
131
|
+
emailAddress: TextColumnType<true>;
|
|
132
|
+
avatar: TextColumnType<true>;
|
|
119
133
|
};
|
|
120
134
|
export interface TaylorDatabase {
|
|
121
135
|
/**
|
|
@@ -127,13 +141,5 @@ export interface TaylorDatabase {
|
|
|
127
141
|
selectTable: SelectTable;
|
|
128
142
|
attachmentTable: AttachmentTable;
|
|
129
143
|
collaboratorsTable: CollaboratorsTable;
|
|
130
|
-
customers: CustomersTable;
|
|
131
|
-
}
|
|
132
|
-
interface CustomersTable {
|
|
133
|
-
id: NumberColumnType;
|
|
134
|
-
createdAt: DateColumnType;
|
|
135
|
-
updatedAt: DateColumnType;
|
|
136
|
-
firstName: TextColumnType;
|
|
137
|
-
lastName: TextColumnType;
|
|
138
144
|
}
|
|
139
145
|
export {};
|
package/dist/esm/executor.js
CHANGED
|
@@ -44,7 +44,7 @@ export class Executor {
|
|
|
44
44
|
}
|
|
45
45
|
const jsonResponse = await response.json();
|
|
46
46
|
if (jsonResponse.errors) {
|
|
47
|
-
throw new Error(`GraphQL errors: ${
|
|
47
|
+
throw new Error(`GraphQL errors: ${jsonResponse.errors.map(error => error.message).join('\n')}`);
|
|
48
48
|
}
|
|
49
49
|
if (jsonResponse.data) {
|
|
50
50
|
const [firstKey] = Object.keys(jsonResponse.data);
|
package/dist/esm/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAMhE,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IACD,+DAA+D;IAC/D,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;QACjE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,OAAO,QAAQ;IACnB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,oBAAoB,CAAsB;IAE1C,YAAY,OAAe,EAAE,MAAc;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE;YACxD,OAAO;YACP,MAAM;YACN,QAAQ,EAAE,YAAY,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,OAAmB;QAClC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAa,EACb,SAA8B,EAC9B,OAAgC;QAEhC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,EAAE;gBACvC,MAAM,EAAE,UAAU;gBAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAC9D,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3C,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor.ts"],"names":[],"mappings":"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"}
|