@juit/pgproxy-persister 1.0.0 → 1.0.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/dist/model.cjs.map +1 -1
- package/dist/model.d.ts +14 -8
- package/dist/model.mjs.map +1 -1
- package/package.json +4 -3
- package/src/model.ts +28 -11
package/dist/model.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/model.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,OAAO,WAAgB,SAAoC;AAClE,MAAI,CAAE;AAAW,UAAM,IAAI,MAAM,OAAO;AAC1C;AAEA,SAAS,YAAY,OAAY,SAAyC;AACxE,SAAO,MAAM,QAAQ,KAAK,GAAG,OAAO;AACtC;AAEA,SAAS,aAAa,OAAY,SAA0C;AAC1E,SAAO,SAAU,OAAO,UAAU,UAAW,OAAO;AACtD;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/model.d.ts
CHANGED
|
@@ -7,16 +7,18 @@ type OnlyStrings<T> = T extends string ? T : never;
|
|
|
7
7
|
export interface ColumnDefinition<T = any> {
|
|
8
8
|
/** The TypeScript type of the column (from the type parser) */
|
|
9
9
|
type: T;
|
|
10
|
-
/** Whether the column is
|
|
10
|
+
/** Whether the column is _generated_ or not */
|
|
11
|
+
isGenerated?: boolean;
|
|
12
|
+
/** Whether the column is _nullable_ or not */
|
|
11
13
|
isNullable?: boolean;
|
|
12
14
|
/** Whether the column _specifies a default value_ or not */
|
|
13
15
|
hasDefault?: boolean;
|
|
14
16
|
}
|
|
15
17
|
/** Infer the TypeScript type suitable for an `INSERT` in a table */
|
|
16
18
|
export type InferInsertType<Table extends Record<string, ColumnDefinition>> = SimplifyIntersection<{
|
|
17
|
-
[Column in keyof Table as Column extends string ? Table[Column]['isNullable'] extends true ? Column : Table[Column]['hasDefault'] extends true ? Column : never : never]?: Table[Column]['isNullable'] extends true ? Table[Column]['type'] | null : Table[Column]['type'];
|
|
19
|
+
[Column in keyof Table as Column extends string ? Table[Column]['isGenerated'] extends true ? never : Table[Column]['isNullable'] extends true ? Column : Table[Column]['hasDefault'] extends true ? Column : never : never]?: Table[Column]['isNullable'] extends true ? Table[Column]['type'] | null : Table[Column]['type'];
|
|
18
20
|
} & {
|
|
19
|
-
[Column in keyof Table as Column extends string ? Table[Column]['isNullable'] extends true ? never : Table[Column]['hasDefault'] extends true ? never : Column : never]-?: Table[Column]['isNullable'] extends true ? Table[Column]['type'] | null : Table[Column]['type'];
|
|
21
|
+
[Column in keyof Table as Column extends string ? Table[Column]['isGenerated'] extends true ? never : Table[Column]['isNullable'] extends true ? never : Table[Column]['hasDefault'] extends true ? never : Column : never]-?: Table[Column]['isNullable'] extends true ? Table[Column]['type'] | null : Table[Column]['type'];
|
|
20
22
|
}>;
|
|
21
23
|
/** Infer the TypeScript type suitable for a `SELECT` from a table */
|
|
22
24
|
export type InferSelectType<Table extends Record<string, ColumnDefinition>> = {
|
|
@@ -24,6 +26,10 @@ export type InferSelectType<Table extends Record<string, ColumnDefinition>> = {
|
|
|
24
26
|
};
|
|
25
27
|
/** Infer the TypeScript type suitable for a `UPDATE` in a table */
|
|
26
28
|
export type InferUpdateType<Table extends Record<string, ColumnDefinition>> = {
|
|
29
|
+
[Column in keyof Table as Column extends string ? Table[Column]['isGenerated'] extends true ? never : Column : never]?: Table[Column]['isNullable'] extends true ? Table[Column]['type'] | null : Table[Column]['type'];
|
|
30
|
+
};
|
|
31
|
+
/** Infer the TypeScript type used for querying records */
|
|
32
|
+
export type InferQueryType<Table extends Record<string, ColumnDefinition>> = {
|
|
27
33
|
[Column in keyof Table as Column extends string ? Column : never]?: Table[Column]['isNullable'] extends true ? Table[Column]['type'] | null : Table[Column]['type'];
|
|
28
34
|
};
|
|
29
35
|
/** Infer the available sort values for a table (as required by `ORDER BY`) */
|
|
@@ -44,7 +50,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
44
50
|
* @param data - The data to associate with the given key (all extra columns)
|
|
45
51
|
* @returns A record containing all colums from the table (including defaults)
|
|
46
52
|
*/
|
|
47
|
-
upsert<K extends
|
|
53
|
+
upsert<K extends InferQueryType<Table>>(keys: K, data: Omit<InferInsertType<Table>, keyof K>): Promise<InferSelectType<Table>>;
|
|
48
54
|
/**
|
|
49
55
|
* Read all rows in the table associated with the specified query
|
|
50
56
|
*
|
|
@@ -54,7 +60,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
54
60
|
* @param length - The maximum number of rows to return
|
|
55
61
|
* @returns An array of records containing all columns from the table
|
|
56
62
|
*/
|
|
57
|
-
read(query?:
|
|
63
|
+
read(query?: InferQueryType<Table>, sort?: InferSort<Table> | InferSort<Table>[], offset?: number, limit?: number): Promise<InferSelectType<Table>[]>;
|
|
58
64
|
/**
|
|
59
65
|
* Find the _first_ rows in the table associated with the specified query
|
|
60
66
|
*
|
|
@@ -62,7 +68,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
62
68
|
* @param sort - Any sort criteria to order the data
|
|
63
69
|
* @returns The first records matching the query or `undefined`
|
|
64
70
|
*/
|
|
65
|
-
find(query?:
|
|
71
|
+
find(query?: InferQueryType<Table>, sort?: InferSort<Table> | InferSort<Table>[]): Promise<InferSelectType<Table> | undefined>;
|
|
66
72
|
/**
|
|
67
73
|
* Update all rows in the table matching the specified query.
|
|
68
74
|
*
|
|
@@ -73,7 +79,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
73
79
|
* @param patch - The updated data to persist in the table
|
|
74
80
|
* @returns An array of updated records containing all columns from the table
|
|
75
81
|
*/
|
|
76
|
-
update(query:
|
|
82
|
+
update(query: InferQueryType<Table>, patch: InferUpdateType<Table>): Promise<InferSelectType<Table>[]>;
|
|
77
83
|
/**
|
|
78
84
|
* Delete all rows in the table matching the specified query.
|
|
79
85
|
*
|
|
@@ -83,7 +89,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
83
89
|
* @param query - The columns whose values need to be queried (for equality)
|
|
84
90
|
* @returns The number of rows deleted
|
|
85
91
|
*/
|
|
86
|
-
delete(query:
|
|
92
|
+
delete(query: InferQueryType<Table>): Promise<number>;
|
|
87
93
|
}
|
|
88
94
|
/** Constructor for model instances */
|
|
89
95
|
export interface ModelConstructor {
|
package/dist/model.mjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/model.ts"],
|
|
4
|
-
"mappings": ";AAMA,SAAS,OAAO,WAAgB,SAAoC;AAClE,MAAI,CAAE;AAAW,UAAM,IAAI,MAAM,OAAO;AAC1C;AAEA,SAAS,YAAY,OAAY,SAAyC;AACxE,SAAO,MAAM,QAAQ,KAAK,GAAG,OAAO;AACtC;AAEA,SAAS,aAAa,OAAY,SAA0C;AAC1E,SAAO,SAAU,OAAO,UAAU,UAAW,OAAO;AACtD;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juit/pgproxy-persister",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
|
+
"scripts": {},
|
|
29
30
|
"author": "Juit Developers <developers@juit.com>",
|
|
30
31
|
"license": "Apache-2.0",
|
|
31
32
|
"repository": {
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
"src/"
|
|
53
54
|
],
|
|
54
55
|
"dependencies": {
|
|
55
|
-
"@juit/pgproxy-client": "1.0.
|
|
56
|
-
"@juit/pgproxy-types": "1.0.
|
|
56
|
+
"@juit/pgproxy-client": "1.0.1",
|
|
57
|
+
"@juit/pgproxy-types": "1.0.1"
|
|
57
58
|
}
|
|
58
59
|
}
|
package/src/model.ts
CHANGED
|
@@ -27,7 +27,9 @@ type OnlyStrings<T> = T extends string ? T : never
|
|
|
27
27
|
export interface ColumnDefinition<T = any> {
|
|
28
28
|
/** The TypeScript type of the column (from the type parser) */
|
|
29
29
|
type: T,
|
|
30
|
-
/** Whether the column is
|
|
30
|
+
/** Whether the column is _generated_ or not */
|
|
31
|
+
isGenerated?: boolean,
|
|
32
|
+
/** Whether the column is _nullable_ or not */
|
|
31
33
|
isNullable?: boolean,
|
|
32
34
|
/** Whether the column _specifies a default value_ or not */
|
|
33
35
|
hasDefault?: boolean,
|
|
@@ -39,6 +41,7 @@ export type InferInsertType<Table extends Record<string, ColumnDefinition>> =
|
|
|
39
41
|
/* First part: all nullable or defaulted columns are optional */
|
|
40
42
|
[ Column in keyof Table as
|
|
41
43
|
Column extends string ?
|
|
44
|
+
Table[Column]['isGenerated'] extends true ? never :
|
|
42
45
|
Table[Column]['isNullable'] extends true ? Column :
|
|
43
46
|
Table[Column]['hasDefault'] extends true ? Column :
|
|
44
47
|
never :
|
|
@@ -51,6 +54,7 @@ export type InferInsertType<Table extends Record<string, ColumnDefinition>> =
|
|
|
51
54
|
/* Second part: all non-nullable or non-defaulted columns are required */
|
|
52
55
|
[ Column in keyof Table as
|
|
53
56
|
Column extends string ?
|
|
57
|
+
Table[Column]['isGenerated'] extends true ? never :
|
|
54
58
|
Table[Column]['isNullable'] extends true ? never :
|
|
55
59
|
Table[Column]['hasDefault'] extends true ? never :
|
|
56
60
|
Column :
|
|
@@ -73,6 +77,19 @@ export type InferSelectType<Table extends Record<string, ColumnDefinition>> =
|
|
|
73
77
|
|
|
74
78
|
/** Infer the TypeScript type suitable for a `UPDATE` in a table */
|
|
75
79
|
export type InferUpdateType<Table extends Record<string, ColumnDefinition>> =
|
|
80
|
+
{ [ Column in keyof Table as
|
|
81
|
+
Column extends string ?
|
|
82
|
+
Table[Column]['isGenerated'] extends true ? never :
|
|
83
|
+
Column :
|
|
84
|
+
never
|
|
85
|
+
] ? :
|
|
86
|
+
Table[Column]['isNullable'] extends true ?
|
|
87
|
+
Table[Column]['type'] | null :
|
|
88
|
+
Table[Column]['type']
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Infer the TypeScript type used for querying records */
|
|
92
|
+
export type InferQueryType<Table extends Record<string, ColumnDefinition>> =
|
|
76
93
|
{ [ Column in keyof Table as
|
|
77
94
|
Column extends string ? Column : never
|
|
78
95
|
] ? :
|
|
@@ -108,7 +125,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
108
125
|
* @param data - The data to associate with the given key (all extra columns)
|
|
109
126
|
* @returns A record containing all colums from the table (including defaults)
|
|
110
127
|
*/
|
|
111
|
-
upsert<K extends
|
|
128
|
+
upsert<K extends InferQueryType<Table>>(
|
|
112
129
|
keys: K,
|
|
113
130
|
data: Omit<InferInsertType<Table>, keyof K>,
|
|
114
131
|
): Promise<InferSelectType<Table>>
|
|
@@ -123,7 +140,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
123
140
|
* @returns An array of records containing all columns from the table
|
|
124
141
|
*/
|
|
125
142
|
read(
|
|
126
|
-
query?:
|
|
143
|
+
query?: InferQueryType<Table>,
|
|
127
144
|
sort?: InferSort<Table> | InferSort<Table>[],
|
|
128
145
|
offset?: number,
|
|
129
146
|
limit?: number,
|
|
@@ -137,7 +154,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
137
154
|
* @returns The first records matching the query or `undefined`
|
|
138
155
|
*/
|
|
139
156
|
find(
|
|
140
|
-
query?:
|
|
157
|
+
query?: InferQueryType<Table>,
|
|
141
158
|
sort?: InferSort<Table> | InferSort<Table>[],
|
|
142
159
|
): Promise<InferSelectType<Table> | undefined>
|
|
143
160
|
|
|
@@ -152,7 +169,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
152
169
|
* @returns An array of updated records containing all columns from the table
|
|
153
170
|
*/
|
|
154
171
|
update(
|
|
155
|
-
query:
|
|
172
|
+
query: InferQueryType<Table>,
|
|
156
173
|
patch: InferUpdateType<Table>,
|
|
157
174
|
): Promise<InferSelectType<Table>[]>
|
|
158
175
|
|
|
@@ -166,7 +183,7 @@ export interface Model<Table extends Record<string, ColumnDefinition>> {
|
|
|
166
183
|
* @returns The number of rows deleted
|
|
167
184
|
*/
|
|
168
185
|
delete(
|
|
169
|
-
query:
|
|
186
|
+
query: InferQueryType<Table>,
|
|
170
187
|
): Promise<number>
|
|
171
188
|
}
|
|
172
189
|
|
|
@@ -404,7 +421,7 @@ class ModelImpl<Table extends Record<string, ColumnDefinition>> implements Model
|
|
|
404
421
|
return result.rows[0]!
|
|
405
422
|
}
|
|
406
423
|
|
|
407
|
-
async upsert<K extends
|
|
424
|
+
async upsert<K extends InferQueryType<Table>>(
|
|
408
425
|
keys: K,
|
|
409
426
|
data: Omit<InferInsertType<Table>, keyof K>,
|
|
410
427
|
): Promise<InferSelectType<Table>> {
|
|
@@ -414,7 +431,7 @@ class ModelImpl<Table extends Record<string, ColumnDefinition>> implements Model
|
|
|
414
431
|
}
|
|
415
432
|
|
|
416
433
|
async read(
|
|
417
|
-
query:
|
|
434
|
+
query: InferQueryType<Table> = {},
|
|
418
435
|
sort: InferSort<Table> | InferSort<Table>[] = [],
|
|
419
436
|
offset: number = 0,
|
|
420
437
|
limit: number = 0,
|
|
@@ -425,7 +442,7 @@ class ModelImpl<Table extends Record<string, ColumnDefinition>> implements Model
|
|
|
425
442
|
}
|
|
426
443
|
|
|
427
444
|
async find(
|
|
428
|
-
query?:
|
|
445
|
+
query?: InferQueryType<Table>,
|
|
429
446
|
sort?: InferSort<Table> | InferSort<Table>[],
|
|
430
447
|
): Promise<InferSelectType<Table> | undefined> {
|
|
431
448
|
const result = await this.read(query, sort, 0, 1)
|
|
@@ -433,7 +450,7 @@ class ModelImpl<Table extends Record<string, ColumnDefinition>> implements Model
|
|
|
433
450
|
}
|
|
434
451
|
|
|
435
452
|
async update(
|
|
436
|
-
query:
|
|
453
|
+
query: InferQueryType<Table>,
|
|
437
454
|
patch: InferUpdateType<Table>,
|
|
438
455
|
): Promise<InferSelectType<Table>[]> {
|
|
439
456
|
const [ sql, params ] = update(this._schema, this._table, query, patch)
|
|
@@ -442,7 +459,7 @@ class ModelImpl<Table extends Record<string, ColumnDefinition>> implements Model
|
|
|
442
459
|
}
|
|
443
460
|
|
|
444
461
|
async delete(
|
|
445
|
-
query:
|
|
462
|
+
query: InferQueryType<Table>,
|
|
446
463
|
): Promise<number> {
|
|
447
464
|
const [ sql, params ] = del(this._schema, this._table, query)
|
|
448
465
|
const result = await this._connection.query(sql, params)
|