@mrnafisia/type-query 4.0.7 → 4.0.9

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.
Files changed (46) hide show
  1. package/dist/prd.tsconfig.tsbuildinfo +1 -0
  2. package/dist/src/Table.d.ts +158 -0
  3. package/dist/src/Table.d.ts.map +1 -0
  4. package/dist/src/Table.js +6 -0
  5. package/dist/src/Table.js.map +1 -0
  6. package/dist/src/context.d.ts +90 -0
  7. package/dist/src/context.d.ts.map +1 -0
  8. package/dist/src/context.js +84 -0
  9. package/dist/src/context.js.map +1 -0
  10. package/dist/src/createModelParser.d.ts +47 -0
  11. package/dist/src/createModelParser.d.ts.map +1 -0
  12. package/dist/src/createModelParser.js +339 -0
  13. package/dist/src/createModelParser.js.map +1 -0
  14. package/dist/src/ddl.d.ts +22 -0
  15. package/dist/src/ddl.d.ts.map +1 -0
  16. package/dist/src/ddl.js +92 -0
  17. package/dist/src/ddl.js.map +1 -0
  18. package/dist/src/entity.d.ts +114 -0
  19. package/dist/src/entity.d.ts.map +1 -0
  20. package/dist/src/entity.js +543 -0
  21. package/dist/src/entity.js.map +1 -0
  22. package/dist/src/index.d.ts +10 -0
  23. package/dist/src/index.d.ts.map +1 -0
  24. package/dist/src/index.js +70 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/keywords.d.ts +158 -0
  27. package/dist/src/keywords.d.ts.map +1 -0
  28. package/dist/src/keywords.js +187 -0
  29. package/dist/src/keywords.js.map +1 -0
  30. package/dist/src/resolve.d.ts +15 -0
  31. package/dist/src/resolve.d.ts.map +1 -0
  32. package/dist/src/resolve.js +599 -0
  33. package/dist/src/resolve.js.map +1 -0
  34. package/dist/src/testTransaction.d.ts +23 -0
  35. package/dist/src/testTransaction.d.ts.map +1 -0
  36. package/dist/src/testTransaction.js +115 -0
  37. package/dist/src/testTransaction.js.map +1 -0
  38. package/dist/src/transaction.d.ts +6 -0
  39. package/dist/src/transaction.d.ts.map +1 -0
  40. package/dist/src/transaction.js +28 -0
  41. package/dist/src/transaction.js.map +1 -0
  42. package/dist/src/utils.d.ts +62 -0
  43. package/dist/src/utils.d.ts.map +1 -0
  44. package/dist/src/utils.js +86 -0
  45. package/dist/src/utils.js.map +1 -0
  46. package/package.json +1 -1
@@ -0,0 +1,339 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createModelParser = exports.Parser = exports.Int8Range = exports.Int4Range = exports.Int2Range = void 0;
7
+ const decimal_js_1 = __importDefault(require("decimal.js"));
8
+ const never_catch_1 = require("never-catch");
9
+ const Int2Range = {
10
+ min: -32768,
11
+ max: 32767
12
+ };
13
+ exports.Int2Range = Int2Range;
14
+ const Int4Range = {
15
+ min: -2147483648,
16
+ max: 2147483647
17
+ };
18
+ exports.Int4Range = Int4Range;
19
+ const Int8Range = {
20
+ min: BigInt('-9223372036854775808'),
21
+ max: BigInt('9223372036854775807')
22
+ };
23
+ exports.Int8Range = Int8Range;
24
+ const Parser = {
25
+ boolean: (v, nullable = false) => {
26
+ if (nullable &&
27
+ (v === null ||
28
+ (typeof v === 'string' && v.toLowerCase() === 'null'))) {
29
+ return null;
30
+ }
31
+ switch (typeof v) {
32
+ case 'boolean':
33
+ return v;
34
+ case 'string':
35
+ switch (v) {
36
+ case 't':
37
+ case 'true':
38
+ return true;
39
+ case 'f':
40
+ case 'false':
41
+ return false;
42
+ default:
43
+ return undefined;
44
+ }
45
+ default:
46
+ return undefined;
47
+ }
48
+ },
49
+ number: (v, nullable = false) => {
50
+ if (nullable &&
51
+ (v === null ||
52
+ (typeof v === 'string' && v.toLowerCase() === 'null'))) {
53
+ return null;
54
+ }
55
+ if (typeof v === 'number') {
56
+ return v;
57
+ }
58
+ else if (typeof v === 'string') {
59
+ const _v = Number(v);
60
+ return Number.isNaN(_v) ? undefined : _v;
61
+ }
62
+ else {
63
+ return undefined;
64
+ }
65
+ },
66
+ integer: (v, nullable = false) => {
67
+ const _v = Parser.number(v, nullable);
68
+ return typeof _v === 'number' ? Math.trunc(_v) : _v;
69
+ },
70
+ bigInt: (v, nullable = false) => {
71
+ if (nullable &&
72
+ (v === null ||
73
+ (typeof v === 'string' && v.toLowerCase() === 'null'))) {
74
+ return null;
75
+ }
76
+ switch (typeof v) {
77
+ case 'bigint':
78
+ return v;
79
+ case 'number':
80
+ return BigInt(v);
81
+ case 'string':
82
+ try {
83
+ return BigInt(v);
84
+ }
85
+ catch (_) {
86
+ return undefined;
87
+ }
88
+ default:
89
+ return undefined;
90
+ }
91
+ },
92
+ decimal: (v, nullable = false) => {
93
+ if (nullable &&
94
+ (v === null ||
95
+ (typeof v === 'string' && v.toLowerCase() === 'null'))) {
96
+ return null;
97
+ }
98
+ if (decimal_js_1.default.isDecimal(v)) {
99
+ return v;
100
+ }
101
+ switch (typeof v) {
102
+ case 'number':
103
+ return new decimal_js_1.default(v);
104
+ case 'string':
105
+ try {
106
+ return new decimal_js_1.default(v);
107
+ }
108
+ catch (_) {
109
+ return undefined;
110
+ }
111
+ default:
112
+ return undefined;
113
+ }
114
+ },
115
+ string: (v, nullable = false) => {
116
+ if (nullable &&
117
+ (v === null ||
118
+ (typeof v === 'string' && v.toLowerCase() === 'null'))) {
119
+ return null;
120
+ }
121
+ switch (typeof v) {
122
+ case 'boolean':
123
+ case 'number':
124
+ case 'bigint':
125
+ return `${v}`;
126
+ case 'string':
127
+ return v;
128
+ default:
129
+ return undefined;
130
+ }
131
+ },
132
+ dateTime: (v, nullable = false) => {
133
+ if (nullable &&
134
+ (v === null ||
135
+ (typeof v === 'string' && v.toLowerCase() === 'null'))) {
136
+ return null;
137
+ }
138
+ if (v instanceof Date && `${v}` !== 'Invalid Date') {
139
+ return v;
140
+ }
141
+ if (typeof v === 'number' || typeof v === 'string') {
142
+ const _v = new Date(v);
143
+ return `${_v}` === 'Invalid Date' ? undefined : _v;
144
+ }
145
+ return undefined;
146
+ },
147
+ date: (v, nullable = false) => {
148
+ const _v = Parser.dateTime(v, nullable);
149
+ if (_v instanceof Date &&
150
+ _v.toISOString().split('T')[1] !== '00:00:00.000Z') {
151
+ return undefined;
152
+ }
153
+ return _v;
154
+ },
155
+ json: (v, nullable = false) => {
156
+ if (nullable &&
157
+ (v === null ||
158
+ (typeof v === 'string' && v.toLowerCase() === 'null'))) {
159
+ return null;
160
+ }
161
+ const _v = typeof v !== 'string' ? JSON.stringify(v) : v;
162
+ try {
163
+ const parsedV = JSON.parse(_v);
164
+ if (typeof parsedV !== 'object' || parsedV === null) {
165
+ return undefined;
166
+ }
167
+ return parsedV;
168
+ }
169
+ catch (_) {
170
+ return undefined;
171
+ }
172
+ }
173
+ };
174
+ exports.Parser = Parser;
175
+ const createModelParser = ({ columns }, { parsers, errorsMap } = {}) => {
176
+ const columnsParser = Object.fromEntries(Object.entries(columns).map(([key, column]) => {
177
+ let defaultParser;
178
+ switch (column.type) {
179
+ case 'boolean':
180
+ defaultParser = Parser.boolean;
181
+ break;
182
+ case 'int2':
183
+ defaultParser = (v, nullable) => {
184
+ const _v = Parser.integer(v, nullable);
185
+ if (_v === null) {
186
+ return null;
187
+ }
188
+ if (_v !== undefined &&
189
+ (column.min ?? Int2Range.min) <= _v &&
190
+ (column.max ?? Int2Range.max) >= _v) {
191
+ return _v;
192
+ }
193
+ return undefined;
194
+ };
195
+ break;
196
+ case 'int4':
197
+ defaultParser = (v, nullable) => {
198
+ const _v = Parser.integer(v, nullable);
199
+ if (_v === null) {
200
+ return null;
201
+ }
202
+ if (_v !== undefined &&
203
+ (column.min ?? Int4Range.min) <= _v &&
204
+ (column.max ?? Int4Range.max) >= _v) {
205
+ return _v;
206
+ }
207
+ return undefined;
208
+ };
209
+ break;
210
+ case 'int8':
211
+ defaultParser = (v, nullable) => {
212
+ const _v = Parser.bigInt(v, nullable);
213
+ if (_v === null) {
214
+ return null;
215
+ }
216
+ if (_v !== undefined &&
217
+ (column.min ?? Int8Range.min) <= _v &&
218
+ (column.max ?? Int8Range.max) >= _v) {
219
+ return _v;
220
+ }
221
+ return undefined;
222
+ };
223
+ break;
224
+ case 'float4':
225
+ case 'float8':
226
+ defaultParser = (v, nullable) => {
227
+ const _v = Parser.number(v, nullable);
228
+ if (_v === null) {
229
+ return null;
230
+ }
231
+ if (_v !== undefined &&
232
+ (column.min === undefined ||
233
+ column.min <= _v) &&
234
+ (column.max === undefined || column.max >= _v)) {
235
+ return _v;
236
+ }
237
+ return undefined;
238
+ };
239
+ break;
240
+ case 'decimal':
241
+ defaultParser = (v, nullable) => {
242
+ const _v = Parser.decimal(v, nullable);
243
+ if (_v === null) {
244
+ return null;
245
+ }
246
+ if (_v !== undefined &&
247
+ (column.min === undefined ||
248
+ _v.comparedTo(column.min) >= 0) &&
249
+ (column.max === undefined ||
250
+ _v.comparedTo(column.max) <= 0) &&
251
+ _v.decimalPlaces() <= column.scale &&
252
+ _v.precision() - _v.decimalPlaces() <=
253
+ column.precision) {
254
+ return _v;
255
+ }
256
+ return undefined;
257
+ };
258
+ break;
259
+ case 'char':
260
+ case 'varchar':
261
+ case 'text':
262
+ case 'uuid':
263
+ defaultParser = (v, nullable) => {
264
+ const _v = Parser.string(v, nullable);
265
+ if (_v === null) {
266
+ return null;
267
+ }
268
+ if (_v !== undefined &&
269
+ (column.minLength === undefined ||
270
+ column.minLength <= _v.length) &&
271
+ (column.maxLength === undefined ||
272
+ column.maxLength >= _v.length) &&
273
+ (column.regex === undefined ||
274
+ column.regex.test(_v))) {
275
+ return _v;
276
+ }
277
+ return undefined;
278
+ };
279
+ break;
280
+ case 'date':
281
+ defaultParser = Parser.date;
282
+ break;
283
+ case 'timestamp':
284
+ case 'timestamptz':
285
+ defaultParser = Parser.dateTime;
286
+ break;
287
+ case 'json':
288
+ case 'jsonb':
289
+ defaultParser = Parser.json;
290
+ break;
291
+ default:
292
+ defaultParser = (v) => v;
293
+ }
294
+ const customParser = parsers?.[key];
295
+ return [
296
+ key,
297
+ customParser !== undefined
298
+ ? (v) => {
299
+ const _v = defaultParser(v, columns[key].nullable);
300
+ if (_v === undefined) {
301
+ return undefined;
302
+ }
303
+ return customParser(_v);
304
+ }
305
+ : (v) => defaultParser(v, columns[key].nullable)
306
+ ];
307
+ }));
308
+ return {
309
+ Parse: (data, requires, optionals, notNulls = []) => {
310
+ const result = {};
311
+ for (const key of requires) {
312
+ if (data[key] === undefined) {
313
+ return (0, never_catch_1.err)(errorsMap?.[key] ?? key);
314
+ }
315
+ result[key] = columnsParser[key](data[key]);
316
+ if (result[key] === undefined ||
317
+ (result[key] === null &&
318
+ notNulls.includes(key))) {
319
+ return (0, never_catch_1.err)(errorsMap?.[key] ?? key);
320
+ }
321
+ }
322
+ for (const key of optionals) {
323
+ if (data[key] === undefined) {
324
+ continue;
325
+ }
326
+ result[key] = columnsParser[key](data[key]);
327
+ if (result[key] === undefined ||
328
+ (result[key] === null &&
329
+ notNulls.includes(key))) {
330
+ return (0, never_catch_1.err)(errorsMap?.[key] ?? key);
331
+ }
332
+ }
333
+ return (0, never_catch_1.ok)(result);
334
+ },
335
+ ...columnsParser
336
+ };
337
+ };
338
+ exports.createModelParser = createModelParser;
339
+ //# sourceMappingURL=createModelParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createModelParser.js","sourceRoot":"","sources":["../../src/createModelParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Table } from './Table';
2
+ declare const generateCreateSequencesSQL: (table: Table, { applyIfNotExist, owner }?: {
3
+ applyIfNotExist?: boolean;
4
+ owner?: string;
5
+ }) => string[];
6
+ declare const generateDropSequencesSQL: (table: Table, { applyIfExist }?: {
7
+ applyIfExist?: boolean;
8
+ }) => string[];
9
+ declare const generateCreateTableSQL: (table: Table, { applyIfNotExist, isTemp, owner }?: {
10
+ applyIfNotExist?: boolean;
11
+ isTemp?: boolean;
12
+ owner?: string;
13
+ }) => string;
14
+ declare const generateDropTableSQL: (table: Table, { applyIfExist }?: {
15
+ applyIfExist?: boolean;
16
+ }) => string;
17
+ declare const getSequenceName: (schemaName: string, tableName: string, columnKey: string, column: {
18
+ title?: string;
19
+ sequenceTitle?: string;
20
+ }) => string;
21
+ export { generateCreateSequencesSQL, generateDropSequencesSQL, generateCreateTableSQL, generateDropTableSQL, getSequenceName };
22
+ //# sourceMappingURL=ddl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ddl.d.ts","sourceRoot":"","sources":["../../src/ddl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAqB,MAAM,SAAS,CAAC;AAEnD,QAAA,MAAM,0BAA0B,GAC5B,OAAO,KAAK,EACZ,6BAGG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,aAmCxD,CAAC;AAEF,QAAA,MAAM,wBAAwB,GAC1B,OAAO,KAAK,EACZ,mBAA0B;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,aAgB5D,CAAC;AAEF,QAAA,MAAM,sBAAsB,GACxB,OAAO,KAAK,EACZ,qCAIG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,WA8E1E,CAAC;AAEF,QAAA,MAAM,oBAAoB,GACtB,OAAO,KAAK,EACZ,mBAA0B;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,WAEgC,CAAC;AAE9F,QAAA,MAAM,eAAe,GACjB,YAAY,MAAM,EAClB,WAAW,MAAM,EACjB,WAAW,MAAM,EACjB,QAAQ;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,WAKE,CAAC;AAER,OAAO,EACH,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EAClB,CAAC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSequenceName = exports.generateDropTableSQL = exports.generateCreateTableSQL = exports.generateDropSequencesSQL = exports.generateCreateSequencesSQL = void 0;
4
+ const keywords_1 = require("./keywords");
5
+ const generateCreateSequencesSQL = (table, { applyIfNotExist = false, owner } = {}) => {
6
+ const queries = [];
7
+ for (const [key, column] of Object.entries(table.columns)) {
8
+ if (column
9
+ .defaultValue?.[0] !== 'auto-increment') {
10
+ continue;
11
+ }
12
+ const tokens = ['CREATE SEQUENCE'];
13
+ if (applyIfNotExist) {
14
+ tokens.push('IF NOT EXISTS');
15
+ }
16
+ tokens.push(getSequenceName(table.schemaName, table.tableName, key, column));
17
+ switch (column.type) {
18
+ case 'int2':
19
+ tokens.push('AS SMALLINT');
20
+ break;
21
+ case 'int4':
22
+ tokens.push('AS INTEGER');
23
+ break;
24
+ }
25
+ if (owner !== undefined) {
26
+ tokens.push(`OWNER TO ${owner}`);
27
+ }
28
+ queries.push(tokens.join(' '));
29
+ }
30
+ return queries;
31
+ };
32
+ exports.generateCreateSequencesSQL = generateCreateSequencesSQL;
33
+ const generateDropSequencesSQL = (table, { applyIfExist = false } = {}) => {
34
+ const queries = [];
35
+ for (const [key, column] of Object.entries(table.columns)) {
36
+ if (column
37
+ .defaultValue?.[0] !== 'auto-increment') {
38
+ continue;
39
+ }
40
+ queries.push(`DROP ${applyIfExist ? 'IF EXISTS ' : ''}SEQUENCE ${getSequenceName(table.schemaName, table.tableName, key, column)}`);
41
+ }
42
+ return queries;
43
+ };
44
+ exports.generateDropSequencesSQL = generateDropSequencesSQL;
45
+ const generateCreateTableSQL = (table, { applyIfNotExist = false, isTemp = false, owner } = {}) => {
46
+ const columnsAsEntries = Object.entries(table.columns);
47
+ const columns = columnsAsEntries.map(([key, column]) => {
48
+ const tokens = [
49
+ `"${column.title ?? key}" ` +
50
+ (column.type.startsWith('custom(') && column.type.endsWith(')')
51
+ ? column.type.substring('custom('.length, column.type.length - 1)
52
+ : keywords_1.Dictionary.PostgresType[column.type])
53
+ ];
54
+ if (column.default) {
55
+ const defaultValue = column.defaultValue;
56
+ switch (defaultValue[0]) {
57
+ case 'auto-increment':
58
+ tokens.push(`DEFAULT NEXTVAL('${getSequenceName(table.schemaName, table.tableName, key, column)}'::REGCLASS)`);
59
+ break;
60
+ case 'sql':
61
+ tokens.push(`DEFAULT ${defaultValue[1]}`);
62
+ break;
63
+ }
64
+ }
65
+ tokens.push(column.nullable ? 'NULL' : 'NOT NULL');
66
+ const reference = column.reference;
67
+ if (reference !== undefined) {
68
+ tokens.push(`REFERENCES "${reference.table.schemaName}"."${reference.table.tableName}"` +
69
+ `("${reference.table.columns[reference.column].title ??
70
+ reference.column}") ` +
71
+ `ON UPDATE ${keywords_1.Dictionary.ReferenceAction[reference.onUpdate ?? 'no-action']} ON DELETE ${keywords_1.Dictionary.ReferenceAction[reference.onDelete ?? 'no-action']}`);
72
+ }
73
+ return tokens.join(' ');
74
+ });
75
+ const constraints = [];
76
+ const primaryKeys = columnsAsEntries.filter(([, column]) => !column.nullable && column.primary);
77
+ if (primaryKeys.length !== 0) {
78
+ constraints.push(`CONSTRAINT "${table.tableName}_pk" PRIMARY KEY(${primaryKeys
79
+ .map(([key, column]) => `"${column.title ?? key}"`)
80
+ .join(', ')})`);
81
+ }
82
+ return `CREATE ${isTemp ? 'TEMPORARY ' : ''}TABLE ${applyIfNotExist ? 'IF NOT EXIST ' : ''}"${table.schemaName}"."${table.tableName}"(${[...columns, ...constraints].join(', ')})${owner !== undefined ? ` OWNER TO ${owner}` : ''}`;
83
+ };
84
+ exports.generateCreateTableSQL = generateCreateTableSQL;
85
+ const generateDropTableSQL = (table, { applyIfExist = false } = {}) => `DROP TABLE ${applyIfExist ? 'IF EXIST ' : ''}"${table.schemaName}"."${table.tableName}"`;
86
+ exports.generateDropTableSQL = generateDropTableSQL;
87
+ const getSequenceName = (schemaName, tableName, columnKey, column) => `"${schemaName}"."` +
88
+ (column.sequenceTitle ??
89
+ tableName + '_' + (column.title ?? columnKey) + '_seq') +
90
+ '"';
91
+ exports.getSequenceName = getSequenceName;
92
+ //# sourceMappingURL=ddl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ddl.js","sourceRoot":"","sources":["../../src/ddl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { ClientBase } from 'pg';
2
+ import { Result } from 'never-catch';
3
+ import { Context } from './context';
4
+ import { GetColumnType, NullableType, Schema, Table } from './Table';
5
+ declare const createEntity: <S extends Schema>(table: Table<S>) => {
6
+ table: Table<S>;
7
+ context: Context<S>;
8
+ select: <const R extends (keyof S & string) | CustomColumn<unknown, string>>(returning: R[] | ((context: Context<S>) => R[]), where: (null | boolean) | ((context: Context<S>) => null | boolean), options?: SelectOptions<S>) => Query<S, R>;
9
+ insert: <const R extends (keyof S & string) | CustomColumn<unknown, string>, N extends NullableAndDefaultColumns<S> = never>(rows: InsertingRow<S, N>[] | ((context: Context<S>) => InsertingRow<S, N>[]), returning: R[] | ((context: Context<S>) => R[]), options?: InsertOptions<S, N>) => Query<S, R>;
10
+ update: <const R extends (keyof S & string) | CustomColumn<unknown, string>>(sets: UpdateSets<S> | ((context: Context<S>) => UpdateSets<S>), where: (null | boolean) | ((context: Context<S>) => null | boolean), returning: R[] | ((context: Context<S>) => R[])) => Query<S, R>;
11
+ delete: <const R extends (keyof S & string) | CustomColumn<unknown, string>>(where: (null | boolean) | ((context: Context<S>) => null | boolean), returning: R[] | ((context: Context<S>) => R[])) => Query<S, R>;
12
+ join: <MA extends string, JS extends Schema, JA extends string>(mainAlias: MA, joinType: JoinType, joinTable: Table<JS>, joinAlias: JA, on: boolean | ((contexts: SchemaMapContexts<Record<MA, S> & Record<JA, JS>>) => boolean)) => JoinEntity<Record<MA, S> & Record<JA, JS>, PrefixAliasOnSchema<S, MA> & PrefixAliasOnSchema<JS, JA>>;
13
+ };
14
+ type By<S extends Schema> = (keyof S & string) | {
15
+ expression: unknown;
16
+ };
17
+ type Order<S extends Schema> = {
18
+ by: By<S>;
19
+ direction: OrderDirection;
20
+ nullPosition?: 'first' | 'last';
21
+ };
22
+ type CustomQueryBuilder = (parts: Record<`${'distinct' | 'returning' | 'from' | 'where' | 'groupBy' | 'orders' | 'pagination'}Part`, string>, params: string[]) => QueryData;
23
+ type SelectOptions<S extends Schema> = {
24
+ distinct?: (true | By<S>[]) | ((context: Context<S>) => true | By<S>[]);
25
+ groupBy?: By<S>[] | ((context: Context<S>) => By<S>[]);
26
+ orders?: Order<S>[] | ((context: Context<S>) => Order<S>[]);
27
+ start?: bigint;
28
+ step?: number;
29
+ customQueryBuilder?: CustomQueryBuilder;
30
+ };
31
+ declare const defaultCustomQueryBuilder: CustomQueryBuilder;
32
+ declare const createSelectQuery: <S extends Schema>(context: Context<S>, table: Table<S>, returning: ReturningRow[] | ((context: Context<S>) => ReturningRow[]), where: (null | boolean) | ((context: Context<S>) => null | boolean), options: SelectOptions<S>, params: string[]) => Result<QueryData, string>;
33
+ type InsertOptions<S extends Schema, N extends NullableAndDefaultColumns<S>> = {
34
+ nullableDefaultColumns?: N[];
35
+ };
36
+ type InsertingRow<S extends Schema, N extends NullableAndDefaultColumns<S>> = {
37
+ [key in keyof S & string as key extends NullableAndDefaultColumns<S> ? never : key]: key extends NullableAndDefaultColumns<S> ? never : GetColumnType<S[key & string]>;
38
+ } & {
39
+ [key in N]?: NullableType<GetColumnType<S[key & string]>, S[key & string]['nullable']>;
40
+ };
41
+ declare const createInsertQuery: <S extends Schema>(context: Context<S>, table: Table<S>, rows: Record<string, unknown>[] | ((context: Context<S>) => Record<string, unknown>[]), returning: ReturningRow[] | ((context: Context<S>) => ReturningRow[]), options: InsertOptions<S, NullableAndDefaultColumns<S>>, params: string[]) => Result<QueryData, string>;
42
+ type UpdateSets<S extends Schema> = {
43
+ [key in keyof S]?: NullableType<GetColumnType<S[key]>, S[key]['nullable']>;
44
+ };
45
+ declare const createUpdateQuery: <S extends Schema>(context: Context<S>, table: Table<S>, sets: UpdateSets<S> | ((context: Context<S>) => UpdateSets<S>), where: (null | boolean) | ((context: Context<S>) => null | boolean), returning: ReturningRow[] | ((context: Context<S>) => ReturningRow[]), params: string[]) => Result<QueryData, string>;
46
+ declare const createDeleteQuery: <S extends Schema>(context: Context<S>, table: Table<S>, returning: ReturningRow[] | ((context: Context<S>) => ReturningRow[]), where: (null | boolean) | ((context: Context<S>) => null | boolean), params: string[]) => Result<QueryData, string>;
47
+ type JoinType = 'inner' | 'left' | 'right' | 'full';
48
+ type TableWithAlias = {
49
+ table: Table;
50
+ alias: string;
51
+ };
52
+ type JoinData<SMap extends Record<string, Schema>> = {
53
+ joinType: JoinType;
54
+ on: boolean | ((contexts: SchemaMapContexts<SMap>) => boolean);
55
+ };
56
+ type SchemaMapKeys<SMap extends Record<string, Schema>> = {
57
+ [key in keyof SMap & string]: `${key}_${keyof SMap[key] & string}`;
58
+ }[keyof SMap & string];
59
+ type SchemaMapContexts<SMap extends Record<string, Schema>> = {
60
+ [key in keyof SMap & string as `${key}Context`]: Context<SMap[key]>;
61
+ };
62
+ type PrefixAliasOnSchema<S extends Schema, A extends string> = {
63
+ [key in keyof S as `${A}_${key & string}`]: S[key];
64
+ };
65
+ type JoinEntity<SMap extends Record<string, Schema>, AllS extends Schema> = {
66
+ contexts: SchemaMapContexts<SMap>;
67
+ select: <const R extends (keyof AllS & string) | CustomColumn<unknown, string>>(returning: R[] | ((contexts: SchemaMapContexts<SMap>) => R[]), where: (null | boolean) | ((contexts: SchemaMapContexts<SMap>) => null | boolean), options?: JoinSelectOptions<SMap>) => Query<AllS, R>;
68
+ join: <JS extends Schema, JA extends string>(joinType: JoinType, joinTable: Table<JS>, joinAlias: JA, on: boolean | ((contexts: SchemaMapContexts<SMap & Record<JA, JS>>) => boolean)) => JoinEntity<SMap & Record<JA, JS>, AllS & PrefixAliasOnSchema<JS, JA>>;
69
+ };
70
+ type JoinSelectOptions<SMap extends Record<string, Schema>> = {
71
+ distinct?: (true | JoinBy<SMap>[]) | ((contexts: SchemaMapContexts<SMap>) => true | JoinBy<SMap>[]);
72
+ groupBy?: JoinBy<SMap>[] | ((contexts: SchemaMapContexts<SMap>) => JoinBy<SMap>[]);
73
+ orders?: JoinOrder<SMap>[] | ((contexts: SchemaMapContexts<SMap>) => JoinOrder<SMap>[]);
74
+ start?: bigint;
75
+ step?: number;
76
+ customQueryBuilder?: (parts: Record<`${'distinct' | 'returning' | 'from' | 'where' | 'groupBy' | 'orders' | 'pagination'}Part`, string>, params: string[]) => QueryData;
77
+ };
78
+ type JoinBy<SMap extends Record<string, Schema>> = SchemaMapKeys<SMap> | {
79
+ expression: unknown;
80
+ };
81
+ type JoinOrder<SMap extends Record<string, Schema>> = {
82
+ by: JoinBy<SMap>;
83
+ direction: OrderDirection;
84
+ nullPosition?: 'first' | 'last';
85
+ };
86
+ declare const createJoinSelectEntity: <SMap extends Record<string, Schema>, AllS extends Schema>(main: TableWithAlias, joinTables: (TableWithAlias & JoinData<SMap>)[], contexts: SchemaMapContexts<SMap>) => JoinEntity<SMap, AllS>;
87
+ declare const createJoinSelectQuery: <SMap extends Record<string, Schema>>(contexts: SchemaMapContexts<SMap>, main: TableWithAlias, joinTables: (TableWithAlias & JoinData<SMap>)[], returning: ReturningRow[] | ((contexts: SchemaMapContexts<SMap>) => ReturningRow[]), where: (null | boolean) | ((contexts: SchemaMapContexts<SMap>) => null | boolean), options: JoinSelectOptions<SMap>, params: string[]) => Result<QueryData, string>;
88
+ declare const getTableDataOfJoinSelectColumn: (tablesData: TableWithAlias[], column: string) => TableWithAlias;
89
+ type OrderDirection = 'asc' | 'desc';
90
+ type Mode = [] | ['count', number] | ['get', 'one' | number];
91
+ type CustomColumn<T, N extends string> = {
92
+ expression: T;
93
+ name: N;
94
+ };
95
+ type NullableAndDefaultColumns<S extends Schema> = keyof {
96
+ [key in keyof S as true extends S[key]['nullable'] ? key : true extends S[key]['default'] ? key : never]: undefined;
97
+ } & string;
98
+ type Query<S extends Schema, R extends keyof S | CustomColumn<unknown, string>> = {
99
+ getData: (params?: string[]) => Result<QueryData, string>;
100
+ execute: <M extends Mode>(client: ClientBase, mode: M, params?: string[]) => Promise<Result<QueryResult<S, R, M>, unknown>>;
101
+ };
102
+ type QueryData = {
103
+ sql: string;
104
+ params: string[];
105
+ };
106
+ type QueryResult<S extends Schema, R extends keyof S | CustomColumn<unknown, string>, M extends Mode> = M extends ['get', 'one'] ? QueryResultRow<S, R> : M extends ['get', number] | [] ? QueryResultRow<S, R>[] : M extends ['count', number] ? undefined : never;
107
+ type QueryResultRow<S extends Schema, R extends keyof S | CustomColumn<unknown, string>> = {
108
+ [key in R as key extends CustomColumn<unknown, infer T> ? T : key]: key extends CustomColumn<infer T, string> ? T : NullableType<GetColumnType<S[key & string]>, S[key & string]['nullable']>;
109
+ };
110
+ type ReturningRow = string | CustomColumn<unknown, string>;
111
+ declare const createQuery: <S extends Schema, const R extends keyof S | CustomColumn<unknown, string>>(createQueryData: (params: string[]) => Result<QueryData, string>) => Query<S, R>;
112
+ export { createEntity, defaultCustomQueryBuilder, createSelectQuery, createInsertQuery, createUpdateQuery, createDeleteQuery, createJoinSelectEntity, createJoinSelectQuery, getTableDataOfJoinSelectColumn, createQuery };
113
+ export type { By, Order, CustomQueryBuilder, SelectOptions, InsertOptions, InsertingRow, UpdateSets, JoinType, TableWithAlias, JoinData, SchemaMapKeys, SchemaMapContexts, PrefixAliasOnSchema, JoinEntity, JoinSelectOptions, JoinBy, JoinOrder, OrderDirection, Mode, CustomColumn, NullableAndDefaultColumns, Query, QueryData, QueryResult, QueryResultRow, ReturningRow };
114
+ //# sourceMappingURL=entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"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"}