@ts-awesome/orm 1.2.0-rc9 → 1.2.1-rc1

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/builder.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { IBuildableQuery, IBuildableSelectQuery, IDeleteBuilder, IInsertBuilder, ISelectBuilder, ITableInfo, IUpdateBuilder, IUpsertBuilder, TableMetaProvider, IFieldInfo, IBuildableUpsertQuery, ITableRef, IBuildableDeleteQuery, IBuildableUpdateQuery, IBuildableInsertQuery, IIndexInfo } from './interfaces';
1
+ import { IBuildableQuery, IBuildableSelectQuery, IDeleteBuilder, IInsertBuilder, IOperandable, ISelectBuilder, ITableInfo, IUpdateBuilder, IUpsertBuilder, TableMetaProvider, IFieldInfo, IBuildableUpsertQuery, ITableRef, IBuildableDeleteQuery, IBuildableUpdateQuery, IBuildableInsertQuery, IIndexInfo } from './interfaces';
2
2
  export interface IExpr {
3
3
  _alias?: string;
4
4
  _column?: string;
@@ -19,7 +19,7 @@ export declare class TableRef<T extends TableMetaProvider> implements ITableRef<
19
19
  get indexes(): IIndexInfo<T>[];
20
20
  }
21
21
  export declare function readModelMeta<T extends TableMetaProvider>(Model: T, required?: boolean): ITableInfo;
22
- export declare function Select<T extends TableMetaProvider>(_: T, distinct?: boolean): ISelectBuilder<InstanceType<T>> & IBuildableSelectQuery;
22
+ export declare function Select<T extends TableMetaProvider>(_: T | IOperandable<T>, distinct?: boolean): ISelectBuilder<InstanceType<T>> & IBuildableSelectQuery;
23
23
  export declare function Insert<T extends TableMetaProvider>(_: T): IInsertBuilder<InstanceType<T>> & IBuildableInsertQuery;
24
24
  export declare function Upsert<T extends TableMetaProvider>(_: T): IUpsertBuilder<InstanceType<T>> & IBuildableUpsertQuery;
25
25
  export declare function Update<T extends TableMetaProvider>(_: T): IUpdateBuilder<InstanceType<T>> & IBuildableUpdateQuery;
package/dist/builder.js CHANGED
@@ -11,8 +11,8 @@ function proxy({ tableName: originalTableName, fields, primaryKey }, ignoreTable
11
11
  if (!fields.has(property)) {
12
12
  throw new Error(`Field '${property}' should be annotated with @dbField() or @dbManyField()`);
13
13
  }
14
- const { relatedTo, name } = fields.get(property);
15
- if (!relatedTo) {
14
+ const { builder, relatedTo, name } = fields.get(property);
15
+ if (!relatedTo && !builder) {
16
16
  const ref = resolveColumn(property, { tableName, fields });
17
17
  if (ignoreTableName) {
18
18
  ref.table = undefined;
@@ -22,6 +22,12 @@ function proxy({ tableName: originalTableName, fields, primaryKey }, ignoreTable
22
22
  if (!primaryKey) {
23
23
  throw new Error('@dbManyField() should be used on table with single field PK');
24
24
  }
25
+ if (builder) {
26
+ const pk = new wrappers_1.ColumnWrapper({ table: tableName, name: primaryKey });
27
+ const query = builder(pk);
28
+ const stripped = Object.fromEntries(Object.entries(query).filter(([, value]) => typeof value !== 'function'));
29
+ return new wrappers_1.Operandable('SUBQUERY', [stripped]);
30
+ }
25
31
  return new wrappers_1.Operandable('SUBQUERY', [{
26
32
  _type: 'SELECT',
27
33
  _columns: [
@@ -41,17 +47,19 @@ function proxy({ tableName: originalTableName, fields, primaryKey }, ignoreTable
41
47
  }
42
48
  });
43
49
  }
44
- function treeOf(_, tableInfo) {
50
+ function treeOf(_, tableInfo, alias) {
45
51
  validateModel(_, tableInfo);
52
+ const tableName = alias !== null && alias !== void 0 ? alias : tableInfo.tableName;
46
53
  return operators_1.and(...Object.keys(_)
47
- .map(field => new wrappers_1.ColumnWrapper(resolveColumn(field, tableInfo)).eq(_[field])));
54
+ .map(field => new wrappers_1.ColumnWrapper(resolveColumn(field, { tableName, fields: tableInfo.fields })).eq(_[field])));
48
55
  }
49
- function columnsOf(_, { tableName, fields }) {
56
+ function columnsOf(_, { tableName: originaltableName, fields }, alias) {
50
57
  _.forEach(field => {
51
- if (!fields.has(field) || fields.get(field).relatedTo) {
58
+ if (!fields.has(field) || fields.get(field).relatedTo || fields.get(field).builder) {
52
59
  throw new Error(`Field '${field}' should be decorated with @dbField`);
53
60
  }
54
61
  });
62
+ const tableName = alias !== null && alias !== void 0 ? alias : originaltableName;
55
63
  return _.map(field => ({ _column: resolveColumn(field, { tableName, fields }) }));
56
64
  }
57
65
  function resolveColumn(property, { tableName, fields }) {
@@ -82,39 +90,39 @@ function validateFields(_, tableInfo) {
82
90
  }
83
91
  function where(_) {
84
92
  const tree = typeof _ === 'function'
85
- ? _(proxy(this._table))
86
- : treeOf(_, this._table);
93
+ ? _(proxy(this._table, false, this._alias))
94
+ : treeOf(_, this._table, this._alias);
87
95
  this._where = this._where || [];
88
96
  this._where.push(tree);
89
97
  return this;
90
98
  }
91
99
  function having(_) {
92
- const tree = _(proxy(this._table));
100
+ const tree = _(proxy(this._table, false, this._alias));
93
101
  this._having = this._having || [];
94
102
  this._having.push(tree);
95
103
  return this;
96
104
  }
97
105
  function columns(_) {
98
106
  this._columns = typeof _ === 'function'
99
- ? _(proxy(this._table))
107
+ ? _(proxy(this._table, false, this._alias))
100
108
  : columnsOf(_, this._table);
101
109
  return this;
102
110
  }
103
111
  function orderBy(_) {
104
112
  this._orderBy = typeof _ === 'function'
105
- ? _(proxy(this._table))
113
+ ? _(proxy(this._table, false, this._alias))
106
114
  : columnsOf(_, this._table);
107
115
  return this;
108
116
  }
109
117
  function groupBy(_) {
110
118
  this._groupBy = typeof _ === 'function'
111
- ? _(proxy(this._table))
119
+ ? _(proxy(this._table, false, this._alias))
112
120
  : columnsOf(_, this._table);
113
121
  return this;
114
122
  }
115
123
  function values(_) {
116
124
  if (typeof _ === 'function') {
117
- this._values = _(proxy(this._table));
125
+ this._values = _(proxy(this._table, false, this._alias));
118
126
  }
119
127
  else {
120
128
  validateModel(_, this._table);
@@ -122,7 +130,7 @@ function values(_) {
122
130
  .keys(_)
123
131
  .filter(prop => this._table.fields.has(prop))
124
132
  .map(prop => this._table.fields.get(prop))
125
- .filter(({ relatedTo }) => relatedTo == null)
133
+ .filter(({ relatedTo, builder }) => relatedTo == null && builder == null)
126
134
  .reduce((p, { getValue, kind, name }) => {
127
135
  let value = getValue(_);
128
136
  let wrapper = undefined;
@@ -164,8 +172,8 @@ function conflict(_) {
164
172
  _columns = index.keyFields.map(prop => { var _a; return (_a = this._table.fields.get(prop)) === null || _a === void 0 ? void 0 : _a.name; });
165
173
  if (index.where) {
166
174
  const tree = typeof index.where === 'function'
167
- ? index.where(proxy(this._table, true))
168
- : treeOf(index.where, this._table);
175
+ ? index.where(proxy(this._table, true, this._alias))
176
+ : treeOf(index.where, this._table, this._alias);
169
177
  _where = [tree];
170
178
  }
171
179
  }
@@ -197,7 +205,7 @@ function join(...args) {
197
205
  _tableName: table.tableName,
198
206
  _alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
199
207
  _type: 'INNER',
200
- _condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
208
+ _condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
201
209
  });
202
210
  return this;
203
211
  }
@@ -209,7 +217,7 @@ function joinLeft(...args) {
209
217
  _tableName: table.tableName,
210
218
  _alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
211
219
  _type: 'LEFT',
212
- _condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
220
+ _condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
213
221
  });
214
222
  return this;
215
223
  }
@@ -221,7 +229,7 @@ function joinRight(...args) {
221
229
  _tableName: table.tableName,
222
230
  _alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
223
231
  _type: 'RIGHT',
224
- _condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
232
+ _condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
225
233
  });
226
234
  return this;
227
235
  }
@@ -233,7 +241,7 @@ function joinFull(...args) {
233
241
  _tableName: table.tableName,
234
242
  _alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
235
243
  _type: 'FULL OUTER',
236
- _condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
244
+ _condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
237
245
  });
238
246
  return this;
239
247
  }
@@ -269,9 +277,13 @@ function readModelMeta(Model, required = true) {
269
277
  }
270
278
  exports.readModelMeta = readModelMeta;
271
279
  function Select(_, distinct = false) {
280
+ function isAlias(x) {
281
+ return x && typeof x._alias === 'string';
282
+ }
272
283
  return {
273
284
  _type: 'SELECT',
274
- _table: readModelMeta(_),
285
+ _table: readModelMeta(isAlias(_) ? _._operands[0] : _),
286
+ _alias: isAlias(_) ? _._alias : null,
275
287
  _distinct: distinct,
276
288
  columns,
277
289
  join,
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { IFieldInfo, WhereBuilder } from './interfaces';
1
+ import { IFieldInfo, WhereBuilder, SubQueryBuilder } from './interfaces';
2
2
  interface IDBIndexMeta<T> {
3
3
  fields: string[];
4
4
  name: string;
@@ -20,5 +20,6 @@ interface IDBFilterFieldMeta {
20
20
  interface IDBManyFieldMeta extends IDBFilterFieldMeta, Pick<IFieldInfo, 'nullable' | 'model' | 'kind'> {
21
21
  }
22
22
  export declare function dbFilterField(fieldMeta: IDBFilterFieldMeta): PropertyDecorator;
23
+ export declare function dbFilterField<T = number>(builder: SubQueryBuilder<T>): PropertyDecorator;
23
24
  export declare function dbManyField(fieldMeta: IDBManyFieldMeta): PropertyDecorator;
24
25
  export {};
@@ -80,10 +80,18 @@ function dbField(...args) {
80
80
  }
81
81
  }
82
82
  exports.dbField = dbField;
83
- // noinspection JSUnusedGlobalSymbols
84
83
  function dbFilterField(fieldMeta) {
85
84
  return function (target, key) {
86
85
  const { fields } = ensureTableInfo(target.constructor);
86
+ if (typeof fieldMeta === 'function') {
87
+ const name = key.toString();
88
+ fields.set(key.toString(), {
89
+ name,
90
+ builder: fieldMeta,
91
+ getValue: () => undefined,
92
+ });
93
+ return;
94
+ }
87
95
  const { valueField, keyField, table } = fieldMeta, rest = __rest(fieldMeta, ["valueField", "keyField", "table"]);
88
96
  fields.set(key.toString(), Object.assign(Object.assign({}, rest), { name: valueField, relatedTo: {
89
97
  keyField,
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { IExpression, IJoin, IOrderBy, IReference } from './intermediate';
2
+ import { Operandable } from "./wrappers";
2
3
  export declare type DbValueType = string | number | boolean | Date | null | undefined;
3
4
  export interface IDbField<T = any> {
4
5
  readQuery?(name: string): string;
@@ -6,6 +7,9 @@ export interface IDbField<T = any> {
6
7
  reader?(raw: DbValueType): T;
7
8
  writer?(value: T): DbValueType;
8
9
  }
10
+ export interface SubQueryBuilder<T = number> {
11
+ (value: Operandable<T>): IBuildableSubSelectQuery;
12
+ }
9
13
  declare type Class = new (...args: any) => any;
10
14
  export interface IFieldInfo {
11
15
  primaryKey?: true;
@@ -16,6 +20,7 @@ export interface IFieldInfo {
16
20
  tableName: string;
17
21
  keyField: string;
18
22
  };
23
+ builder?: SubQueryBuilder<any>;
19
24
  sensitive?: true;
20
25
  default?: DbValueType;
21
26
  kind?: IDbField;
@@ -89,16 +94,19 @@ export interface Order {
89
94
  }
90
95
  export interface IBuildableWherePartial {
91
96
  _table: ITableInfo;
97
+ _alias?: string;
92
98
  _where?: any[];
93
99
  _limit?: number;
94
100
  }
95
101
  export interface IBuildableValuesPartial {
96
102
  _table: ITableInfo;
103
+ _alias?: string;
97
104
  _values?: any;
98
105
  }
99
106
  export interface IBuildableSelectQuery {
100
107
  _type: 'SELECT';
101
108
  _table: ITableInfo;
109
+ _alias?: string;
102
110
  _distinct?: boolean;
103
111
  _columns?: IExpression[];
104
112
  _joins?: IJoin[];
@@ -112,6 +120,7 @@ export interface IBuildableSelectQuery {
112
120
  export interface IBuildableSubSelectQuery {
113
121
  _type: 'SELECT';
114
122
  _table: ITableInfo;
123
+ _alias?: string;
115
124
  _distinct?: boolean;
116
125
  _columns?: IExpression[];
117
126
  _joins?: IJoin[];
@@ -127,6 +136,7 @@ export interface IBuildableInsertQuery {
127
136
  export interface IBuildableUpsertQuery {
128
137
  _type: 'UPSERT';
129
138
  _table: ITableInfo;
139
+ _alias?: string;
130
140
  _values?: any;
131
141
  _where?: IExpression[];
132
142
  _conflictExp?: {
package/dist/reader.js CHANGED
@@ -34,6 +34,9 @@ function readScalar(data) {
34
34
  return 0;
35
35
  }
36
36
  const raw = first[keys[0]];
37
+ if (raw === null) {
38
+ return 0;
39
+ }
37
40
  const count = parseInt(raw, 10);
38
41
  if (isNaN(count)) {
39
42
  throw new Error(`Can't read count value from db. Invalid Count ${raw}`);
@@ -1 +1 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ts-awesome/orm",
3
- "version": "1.2.0-rc9",
3
+ "version": "1.2.1-rc1",
4
4
  "description": "TypeScript ORM",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,6 +1,7 @@
1
1
  import {alias, and, asc, Delete, desc, Insert, max, Select, sum, TableMetadataSymbol, Update, Upsert, of} from '../dist';
2
- import { Employee, Person } from './models';
2
+ import { Employee, Person, Tag } from './models';
3
3
  import { TableRef, readModelMeta } from '../dist/builder';
4
+ import {exists} from "../src";
4
5
 
5
6
 
6
7
  const tableInfo = readModelMeta(Person);
@@ -169,7 +170,7 @@ describe('Select', () => {
169
170
  });
170
171
 
171
172
  describe('Where filter fields', () => {
172
- it ('has', () => {
173
+ it ('simple many to many', () => {
173
174
  const query = Select(Person).where(({profiles}) => profiles.has('test'));
174
175
  const expectation = [{
175
176
  _operands: [
@@ -197,6 +198,77 @@ describe('Select', () => {
197
198
  }];
198
199
  expect(query._where).toStrictEqual(expectation);
199
200
  });
201
+
202
+ it ('with builder', () => {
203
+ const query = Select(Person).where(({tags}) => tags.has('tag'));
204
+ const expectation = [{
205
+ _operands: [
206
+ "tag",
207
+ {
208
+ _operator: 'SUBQUERY',
209
+ _operands: [
210
+ {
211
+ _columns: [{_column: { table: "Tag", name: "name", wrapper: undefined}}],
212
+ _table: readModelMeta(Tag),
213
+ _alias: null,
214
+ _type: "SELECT",
215
+ _distinct: false,
216
+ _joins: [
217
+ {
218
+ _alias: undefined,
219
+ _tableName: "TagPerson",
220
+ _type: "INNER",
221
+ _condition: {
222
+ _operands: [
223
+ {
224
+ _operands: [
225
+ {
226
+ _column: {
227
+ name: 'id',
228
+ table: "Tag",
229
+ wrapper: undefined
230
+ }
231
+ },
232
+ {
233
+ _column: {
234
+ name: 'tag',
235
+ table: "TagPerson",
236
+ wrapper: undefined
237
+ }
238
+ }
239
+ ],
240
+ _operator: '='
241
+ },
242
+ {
243
+ _operands: [
244
+ {
245
+ _column: {
246
+ name: 'person',
247
+ table: "TagPerson",
248
+ wrapper: undefined
249
+ }
250
+ },
251
+ {
252
+ _column: {
253
+ name: 'id',
254
+ table: "Person",
255
+ }
256
+ }
257
+ ],
258
+ _operator: '='
259
+ },
260
+ ],
261
+ _operator: 'AND'
262
+ }
263
+ }
264
+ ]
265
+ }
266
+ ]},
267
+ ],
268
+ _operator: "IN",
269
+ }];
270
+ expect(query._where).toStrictEqual(expectation);
271
+ });
200
272
  });
201
273
 
202
274
  it('Having', () => {
@@ -262,6 +334,55 @@ describe('Select', () => {
262
334
  const query = Select(Person).offset(offset);
263
335
  expect(query._offset).toBe(offset);
264
336
  });
337
+
338
+ it('subquery on self', () => {
339
+ const query = Select(Person).where(({id}) => exists(Select(alias(Person, 'person_filter')).where(({id: _}) => _.eq(id))));
340
+
341
+ {
342
+ const x = (query as any)._where[0]._operands[0];
343
+ delete x.columns;
344
+ delete x.groupBy;
345
+ delete x.having;
346
+ delete x.join;
347
+ delete x.joinFull;
348
+ delete x.joinLeft;
349
+ delete x.joinRight;
350
+ delete x.limit;
351
+ delete x.offset;
352
+ delete x.orderBy;
353
+ delete x.where;
354
+ }
355
+
356
+ const expectation = {
357
+ _where: [{
358
+ "_operands": [{
359
+ "_alias": "person_filter",
360
+ "_distinct": false,
361
+ "_table": Person[TableMetadataSymbol],
362
+ "_type": "SELECT",
363
+ "_where": [{
364
+ "_operands": [{
365
+ "_column": {
366
+ "name": "id",
367
+ "table": "person_filter",
368
+ "wrapper": undefined,
369
+ },
370
+ }, {
371
+ "_column": {
372
+ "name": "id",
373
+ "table": "Person",
374
+ "wrapper": undefined,
375
+ },
376
+ }],
377
+ "_operator": "=",
378
+ }]
379
+ }],
380
+ "_operator": "EXISTS",
381
+ }]
382
+ };
383
+
384
+ expect(query._where).toStrictEqual(expectation._where);
385
+ })
265
386
  });
266
387
 
267
388
  describe('Insert', () => {
package/tests/models.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { dbField, dbTable, IDbField, dbFilterField } from '../dist';
1
+ import { dbField, dbTable, IDbField, dbFilterField, and, Select } from '../src';
2
2
 
3
3
  const UUID: IDbField = {}
4
4
 
@@ -24,7 +24,35 @@ export class Person {
24
24
  keyField: 'person',
25
25
  valueField: 'title',
26
26
  })
27
- profiles: string[];
27
+ profiles?: string[];
28
+
29
+ @dbFilterField(primary => Select(Tag)
30
+ .columns((x) => [x.name])
31
+ .join(TagPerson, (a ,b) => and(a.id.eq(b.tag), b.person.eq(primary)))
32
+ )
33
+ tags?: string[];
34
+ }
35
+
36
+ @dbTable('Tag')
37
+ export class Tag {
38
+ @dbField({
39
+ primaryKey: true,
40
+ autoIncrement: true
41
+ })
42
+ public id!: number;
43
+ @dbField public name!: string;
44
+ }
45
+
46
+ @dbTable('TagPerson')
47
+ export class TagPerson {
48
+ @dbField({
49
+ primaryKey: true,
50
+ })
51
+ public person!: number;
52
+ @dbField({
53
+ primaryKey: true,
54
+ })
55
+ public tag!: number;
28
56
  }
29
57
 
30
58
  @dbTable('Employee')