drizzle-orm 0.11.0 → 0.11.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.
Files changed (58) hide show
  1. package/README.md +11 -11
  2. package/builders/aggregators/selectAggregator.d.ts +1 -9
  3. package/builders/aggregators/selectAggregator.js +1 -55
  4. package/builders/aggregators/selectAggregatorV1.d.ts +39 -0
  5. package/builders/aggregators/selectAggregatorV1.js +143 -0
  6. package/builders/highLvlBuilders/joins/selectJoinBuilder.d.ts +1 -0
  7. package/builders/highLvlBuilders/joins/selectJoinBuilder.js +5 -1
  8. package/builders/highLvlBuilders/selectRequestBuilder.d.ts +5 -5
  9. package/builders/joinBuilders/builders/abstractJoinBuilder.js +1 -1
  10. package/builders/lowLvlBuilders/selects/select.d.ts +4 -1
  11. package/builders/lowLvlBuilders/selects/select.js +27 -1
  12. package/builders/lowLvlBuilders/selects/selectFrom.d.ts +25 -11
  13. package/builders/lowLvlBuilders/selects/selectFrom.js +48 -5
  14. package/builders/lowLvlBuilders/selects/selectJoined.d.ts +22 -9
  15. package/builders/lowLvlBuilders/selects/selectJoined.js +44 -7
  16. package/builders/lowLvlBuilders/selects/whereSelect.d.ts +13 -0
  17. package/builders/lowLvlBuilders/selects/whereSelect.js +24 -0
  18. package/builders/requestBuilders/where/and.d.ts +10 -0
  19. package/builders/requestBuilders/where/and.js +17 -0
  20. package/builders/requestBuilders/where/const.d.ts +7 -0
  21. package/builders/requestBuilders/where/const.js +10 -0
  22. package/builders/requestBuilders/where/constArray.d.ts +7 -0
  23. package/builders/requestBuilders/where/constArray.js +25 -0
  24. package/builders/requestBuilders/where/eqWhere.d.ts +10 -0
  25. package/builders/requestBuilders/where/eqWhere.js +5 -0
  26. package/builders/requestBuilders/where/greater.d.ts +10 -0
  27. package/builders/requestBuilders/where/greater.js +5 -0
  28. package/builders/requestBuilders/where/greaterEq.d.ts +10 -0
  29. package/builders/requestBuilders/where/greaterEq.js +5 -0
  30. package/builders/requestBuilders/where/in.d.ts +10 -0
  31. package/builders/requestBuilders/where/in.js +5 -0
  32. package/builders/requestBuilders/where/isNotNull.d.ts +10 -0
  33. package/builders/requestBuilders/where/isNotNull.js +4 -0
  34. package/builders/requestBuilders/where/isNull.d.ts +10 -0
  35. package/builders/requestBuilders/where/isNull.js +4 -0
  36. package/builders/requestBuilders/where/less.d.ts +10 -0
  37. package/builders/requestBuilders/where/less.js +5 -0
  38. package/builders/requestBuilders/where/lessEq.d.ts +10 -0
  39. package/builders/requestBuilders/where/lessEq.js +5 -0
  40. package/builders/requestBuilders/where/like.d.ts +10 -0
  41. package/builders/requestBuilders/where/like.js +5 -0
  42. package/builders/requestBuilders/where/notEqWhere.d.ts +10 -0
  43. package/builders/requestBuilders/where/notEqWhere.js +5 -0
  44. package/builders/requestBuilders/where/or.d.ts +10 -0
  45. package/builders/requestBuilders/where/or.js +17 -0
  46. package/builders/requestBuilders/where/rawWhere.d.ts +10 -0
  47. package/builders/requestBuilders/where/rawWhere.js +1 -0
  48. package/builders/requestBuilders/where/static.d.ts +4 -1
  49. package/builders/requestBuilders/where/static.js +9 -4
  50. package/builders/requestBuilders/where/static.spec.d.ts +1 -0
  51. package/builders/requestBuilders/where/static.spec.js +59 -0
  52. package/builders/requestBuilders/where/var.d.ts +10 -0
  53. package/builders/requestBuilders/where/var.js +4 -0
  54. package/builders/requestBuilders/where/where.d.ts +10 -0
  55. package/docs/cases/simple_join.js +2 -2
  56. package/package.json +4 -4
  57. package/test.d.ts +0 -1
  58. package/test.js +176 -165
package/README.md CHANGED
@@ -343,8 +343,8 @@ const usersTable = new UsersTable(db);
343
343
  const citiesTable = new CitiesTable(db);
344
344
 
345
345
  const userWithCities = await citiesTable.select()
346
- .where(eq(citiesTable.id, 1))
347
- .leftJoin(usersTable, (cities, users) => onEq(cities.userId, users.id))
346
+ .leftJoin(usersTable, (cities, users) => eq(cities.userId, users.id))
347
+ .where((cities, users) => eq(cities.id, 1))
348
348
  .execute();
349
349
 
350
350
  const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user }));
@@ -353,11 +353,11 @@ const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user
353
353
  ### Join Many-To-Many Tables
354
354
  ##### Join User Groups with Users, using many-to-many table
355
355
  ```typescript
356
- const usersWithUserGroups = await usersToUserGroupsTable.select()
357
- .where(eq(userGroupsTable.id, 1))
358
- .leftJoin(usersTable, (usersToUserGroups, users) => onEq(usersToUserGroups.userId, users.id))
359
- .leftJoin(userGroupsTable, (usersToUserGroups, _users, userGroups) => onEq(usersToUserGroups.groupId, userGroups.id))
360
- .execute();
356
+ const usersWithUserGroups = await usersToUserGroupsTable.select()
357
+ .leftJoin(usersTable, (usersToUserGroups, users) => eq(usersToUserGroups.userId, users.id))
358
+ .leftJoin(userGroupsTable, (usersToUserGroups, _users, userGroups) => eq(usersToUserGroups.groupId, userGroups.id))
359
+ .where((usersToUserGroups, _users, userGroups) => eq(userGroups.id, 1))
360
+ .execute();
361
361
  ```
362
362
  ### Join using partial field select
363
363
  ##### Join Cities with Users getting only needed fields form request
@@ -366,8 +366,8 @@ const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user
366
366
  id: citiesTable.id,
367
367
  userId: citiesTable.userId,
368
368
  })
369
- .where(eq(citiesTable.id, 1))
370
- .leftJoin(usersTable, (cities, users) => onEq(cities.userId, users.id))
369
+ .leftJoin(usersTable, (cities, users) => eq(cities.userId, users.id))
370
+ .where((cities, users) => eq(cities.id, 1))
371
371
  .execute();
372
372
 
373
373
  const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user }));
@@ -375,8 +375,8 @@ const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user
375
375
  ### Another join examples with different callback ON statements
376
376
  ```typescript
377
377
  await citiesTable.select()
378
- .where(eq(citiesTable.location, 'q'))
379
378
  .leftJoin(usersTable, (cities, _users) => eq(cities.id, 13))
379
+ .where((cities, _users) => eq(cities.location, 'q'))
380
380
  .execute();
381
381
  // Join statement generated from query
382
382
  // LEFT JOIN users AS users_1
@@ -397,8 +397,8 @@ await citiesTable.select()
397
397
  // Values: [13, 14]
398
398
 
399
399
  await citiesTable.select()
400
- .where(eq(citiesTable.location, 'location'))
401
400
  .leftJoin(usersTable, (_cities, _users) => raw('<custom expression after ON statement>'))
401
+ .where((cities, _users) => eq(cities.location, 'location'))
402
402
  .execute();
403
403
  // Join statement generated from query
404
404
  // LEFT JOIN users AS users_1
@@ -3,7 +3,6 @@ import ColumnType from '../../columns/types/columnType';
3
3
  import { AbstractTable } from '../../tables';
4
4
  import { JoinType } from '../highLvlBuilders/joins/selectJoinBuilder';
5
5
  import Order from '../highLvlBuilders/order';
6
- import Join from '../joinBuilders/join';
7
6
  import Expr from '../requestBuilders/where/where';
8
7
  import Aggregator from './abstractAggregator';
9
8
  export default class SelectAggregator extends Aggregator {
@@ -26,14 +25,7 @@ export default class SelectAggregator extends Aggregator {
26
25
  orderBy: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined, order?: Order | undefined) => SelectAggregator;
27
26
  distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined) => SelectAggregator;
28
27
  appendFrom: (tableName: string) => SelectAggregator;
29
- join2: (joins: Array<JoinType<AbstractTable<any>>>) => SelectAggregator;
30
- join: (joins: {
31
- join: Join<any>;
32
- partial?: {
33
- [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, any>;
34
- } | undefined;
35
- id?: number | undefined;
36
- }[]) => SelectAggregator;
28
+ join: (joins: Array<JoinType<AbstractTable<any>>>) => SelectAggregator;
37
29
  buildQuery: () => {
38
30
  query: string;
39
31
  values: Array<any>;
@@ -7,8 +7,6 @@ const ecranate_1 = require("../../utils/ecranate");
7
7
  const order_1 = __importDefault(require("../highLvlBuilders/order"));
8
8
  const abstractAggregator_1 = __importDefault(require("./abstractAggregator"));
9
9
  class SelectAggregator extends abstractAggregator_1.default {
10
- // public constructor(table: AbstractTable<any>);
11
- // public constructor(table: AbstractTable<any>, partial: {[name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, AbstractTable<any>>})
12
10
  constructor(table, partial) {
13
11
  super(table, partial);
14
12
  this._from = [];
@@ -67,7 +65,7 @@ class SelectAggregator extends abstractAggregator_1.default {
67
65
  // this._joinCache[tableName] = tableName;
68
66
  return this;
69
67
  };
70
- this.join2 = (joins) => {
68
+ this.join = (joins) => {
71
69
  const tableFrom = this._table.tableName();
72
70
  for (const [index, join] of joins.entries()) {
73
71
  const { table: tableToName, originalName, onExpression, type, columns, } = join;
@@ -88,58 +86,6 @@ class SelectAggregator extends abstractAggregator_1.default {
88
86
  }
89
87
  return this;
90
88
  };
91
- // Add select generator for second table also
92
- this.join = (joins) => {
93
- // const cache: {[tableName: string]: string} = {};
94
- joins.forEach((joinObject) => {
95
- if (joinObject) {
96
- const tableFrom = joinObject.join.fromColumn.getParentName();
97
- const tableTo = joinObject.join.toColumn.getParentName();
98
- const { type } = joinObject.join;
99
- let fromAlias = '';
100
- if (this._joinCache[tableFrom]) {
101
- fromAlias = this._joinCache[tableFrom];
102
- }
103
- else {
104
- fromAlias = `${tableFrom}${joinObject.id ? `_${joinObject.id}` : ''}`;
105
- this._joinCache[tableFrom] = fromAlias;
106
- }
107
- let selectString;
108
- if (joinObject.partial) {
109
- selectString = this.generateSelectArray(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`, Object.values(joinObject.partial), joinObject.id).join('');
110
- }
111
- else {
112
- selectString = this.generateSelectArray(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`, Object.values(joinObject.join.mappedServiceToDb), joinObject.id).join('');
113
- }
114
- this._fields.push(', ');
115
- this._fields.push(selectString);
116
- this._join.push('\n');
117
- this._join.push(type);
118
- this._join.push(' ');
119
- this._join.push(tableTo);
120
- this._join.push(' ');
121
- this._join.push(`AS ${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`);
122
- this._joinCache[tableTo] = `${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`;
123
- this._join.push('\n');
124
- this._join.push('ON ');
125
- this._join.push(fromAlias);
126
- // if (this._joinCache[tableFrom]) {
127
- // this._join.push(this._joinCache[tableFrom]);
128
- // } else {
129
- // this._join.push(tableFrom);
130
- // this._joinCache[tableFrom] = `${tableFrom}${joinObject.id ? `_${joinObject.id}` : ''}`;
131
- // }
132
- this._join.push('.');
133
- this._join.push(joinObject.join.fromColumn.getColumnName());
134
- this._join.push(' = ');
135
- this._join.push(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`);
136
- // this._join.push(toAlias);
137
- this._join.push('.');
138
- this._join.push(joinObject.join.toColumn.getColumnName());
139
- }
140
- });
141
- return this;
142
- };
143
89
  this.buildQuery = () => {
144
90
  this._select.push(this._distinct.join(''));
145
91
  this._select.push(this._fields.join(''));
@@ -0,0 +1,39 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import { AbstractTable } from '../../tables';
4
+ import Order from '../highLvlBuilders/order';
5
+ import Join from '../joinBuilders/join';
6
+ import Expr from '../requestBuilders/where/where';
7
+ import Aggregator from './abstractAggregator';
8
+ export default class SelectAggregatorV1 extends Aggregator {
9
+ private _from;
10
+ private _filters;
11
+ private _select;
12
+ private _join;
13
+ private _limit;
14
+ private _offset;
15
+ private _distinct;
16
+ private _orderBy;
17
+ private _values;
18
+ private _joinCache;
19
+ constructor(table: AbstractTable<any>, partial?: {
20
+ [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, AbstractTable<any>>;
21
+ });
22
+ filters: (filters: Expr) => SelectAggregatorV1;
23
+ limit: (limit?: number | undefined) => SelectAggregatorV1;
24
+ offset: (offset?: number | undefined) => SelectAggregatorV1;
25
+ orderBy: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined, order?: Order | undefined) => SelectAggregatorV1;
26
+ distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined) => SelectAggregatorV1;
27
+ appendFrom: (tableName: string) => SelectAggregatorV1;
28
+ join: (joins: {
29
+ join: Join<any>;
30
+ partial?: {
31
+ [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, any>;
32
+ } | undefined;
33
+ id?: number | undefined;
34
+ }[]) => SelectAggregatorV1;
35
+ buildQuery: () => {
36
+ query: string;
37
+ values: Array<any>;
38
+ };
39
+ }
@@ -0,0 +1,143 @@
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
+ const ecranate_1 = require("../../utils/ecranate");
7
+ const order_1 = __importDefault(require("../highLvlBuilders/order"));
8
+ const abstractAggregator_1 = __importDefault(require("./abstractAggregator"));
9
+ class SelectAggregatorV1 extends abstractAggregator_1.default {
10
+ // public constructor(table: AbstractTable<any>);
11
+ // public constructor(table: AbstractTable<any>, partial: {[name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, AbstractTable<any>>})
12
+ constructor(table, partial) {
13
+ super(table, partial);
14
+ this._from = [];
15
+ this._filters = [];
16
+ this._select = ['SELECT'];
17
+ this._join = [];
18
+ this._limit = [];
19
+ this._offset = [];
20
+ this._distinct = [];
21
+ // private _groupBy: Array<string> = [];
22
+ this._orderBy = [];
23
+ this._values = [];
24
+ this._joinCache = {};
25
+ this.filters = (filters) => {
26
+ if (filters) {
27
+ const queryBuilder = filters.toQueryV1({ position: 1, tableCache: this._joinCache, session: this._table.db.session() });
28
+ this._filters.push('WHERE ');
29
+ this._filters.push(queryBuilder.query);
30
+ this._values = queryBuilder.values;
31
+ }
32
+ return this;
33
+ };
34
+ this.limit = (limit) => {
35
+ if (limit) {
36
+ this._limit.push('LIMIT ');
37
+ this._limit.push(limit.toString());
38
+ }
39
+ return this;
40
+ };
41
+ this.offset = (offset) => {
42
+ if (offset) {
43
+ this._offset.push('OFFSET ');
44
+ this._offset.push(offset.toString());
45
+ }
46
+ return this;
47
+ };
48
+ this.orderBy = (column, order) => {
49
+ if (column !== null && column !== undefined) {
50
+ this._orderBy.push('ORDER BY ');
51
+ const columnParent = this._joinCache[column.getParent().tableName()] ? this._joinCache[column.getParent().tableName()] : column.getParent().tableName();
52
+ this._orderBy.push(`${columnParent}.${ecranate_1.ecranate(column.getColumnName())} `);
53
+ this._orderBy.push(order_1.default[order]);
54
+ }
55
+ return this;
56
+ };
57
+ this.distinct = (column) => {
58
+ if (column) {
59
+ this._distinct.push(` DISTINCT ON(${column.getParent().tableName()}.${ecranate_1.ecranate(column.getColumnName())}) `);
60
+ }
61
+ return this;
62
+ };
63
+ this.appendFrom = (tableName) => {
64
+ this._from.push('FROM ');
65
+ this._from.push(tableName);
66
+ // this._from.push(`${tableName} AS ${tableName}_0`);
67
+ this._joinCache[tableName] = tableName;
68
+ return this;
69
+ };
70
+ // Add select generator for second table also
71
+ this.join = (joins) => {
72
+ // const cache: {[tableName: string]: string} = {};
73
+ joins.forEach((joinObject) => {
74
+ if (joinObject) {
75
+ const tableFrom = joinObject.join.fromColumn.getParentName();
76
+ const tableTo = joinObject.join.toColumn.getParentName();
77
+ const { type } = joinObject.join;
78
+ let fromAlias = '';
79
+ if (this._joinCache[tableFrom]) {
80
+ fromAlias = this._joinCache[tableFrom];
81
+ }
82
+ else {
83
+ fromAlias = `${tableFrom}${joinObject.id ? `_${joinObject.id}` : ''}`;
84
+ this._joinCache[tableFrom] = fromAlias;
85
+ }
86
+ let selectString;
87
+ if (joinObject.partial) {
88
+ selectString = this.generateSelectArray(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`, Object.values(joinObject.partial), joinObject.id).join('');
89
+ }
90
+ else {
91
+ selectString = this.generateSelectArray(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`, Object.values(joinObject.join.mappedServiceToDb), joinObject.id).join('');
92
+ }
93
+ this._fields.push(', ');
94
+ this._fields.push(selectString);
95
+ this._join.push('\n');
96
+ this._join.push(type);
97
+ this._join.push(' ');
98
+ this._join.push(tableTo);
99
+ this._join.push(' ');
100
+ this._join.push(`AS ${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`);
101
+ this._joinCache[tableTo] = `${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`;
102
+ this._join.push('\n');
103
+ this._join.push('ON ');
104
+ this._join.push(fromAlias);
105
+ // if (this._joinCache[tableFrom]) {
106
+ // this._join.push(this._joinCache[tableFrom]);
107
+ // } else {
108
+ // this._join.push(tableFrom);
109
+ // this._joinCache[tableFrom] = `${tableFrom}${joinObject.id ? `_${joinObject.id}` : ''}`;
110
+ // }
111
+ this._join.push('.');
112
+ this._join.push(joinObject.join.fromColumn.getColumnName());
113
+ this._join.push(' = ');
114
+ this._join.push(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`);
115
+ // this._join.push(toAlias);
116
+ this._join.push('.');
117
+ this._join.push(joinObject.join.toColumn.getColumnName());
118
+ }
119
+ });
120
+ return this;
121
+ };
122
+ this.buildQuery = () => {
123
+ this._select.push(this._distinct.join(''));
124
+ this._select.push(this._fields.join(''));
125
+ this._select.push('\n');
126
+ this._select.push(this._from.join(''));
127
+ this._select.push('\n');
128
+ this._select.push(this._join.join(''));
129
+ if (this._join.length > 0) {
130
+ this._select.push('\n');
131
+ }
132
+ this._select.push(this._filters.join(''));
133
+ this._select.push('\n');
134
+ this._select.push(this._orderBy.join(''));
135
+ this._select.push('\n');
136
+ this._select.push(this._limit.join(''));
137
+ this._select.push('\n');
138
+ this._select.push(this._offset.join(''));
139
+ return { query: this._select.join(''), values: this._values };
140
+ };
141
+ }
142
+ }
143
+ exports.default = SelectAggregatorV1;
@@ -38,6 +38,7 @@ export default class JoinBuilder<TJoins extends {
38
38
  leftJoin<TJoinedTable extends AbstractTable<TJoinedTable>, TPartial extends EmptyPartial<TJoinedTable> = undefined>(value: TJoinedTable, callback: (...args: [...TJoins, TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TJoinedTable>>]) => Expr, partial?: TPartial): JoinBuilder<[...TJoins, TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TJoinedTable>>], [...TJoinsResponses, FullOrPartial<TJoinedTable, TPartial>]>;
39
39
  rightJoin<TJoinedTable extends AbstractTable<TJoinedTable>, TPartial extends EmptyPartial<TJoinedTable> = undefined>(value: TJoinedTable, callback: (...args: [...TJoins, TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TJoinedTable>>]) => Expr, partial?: TPartial): JoinBuilder<[...TJoins, TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TJoinedTable>>], [...TJoinsResponses, FullOrPartial<TJoinedTable, TPartial>]>;
40
40
  fullJoin<TJoinedTable extends AbstractTable<TJoinedTable>, TPartial extends EmptyPartial<TJoinedTable> = undefined>(value: TJoinedTable, callback: (...args: [...TJoins, TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TJoinedTable>>]) => Expr, partial?: TPartial): JoinBuilder<[...TJoins, TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TJoinedTable>>], [...TJoinsResponses, FullOrPartial<TJoinedTable, TPartial>]>;
41
+ where: (callback: (...args_0: TJoins) => Expr) => this;
41
42
  execute(): Promise<JoinBuilderResponses<TJoinsResponses>>;
42
43
  private join;
43
44
  }
@@ -40,6 +40,10 @@ class JoinBuilder {
40
40
  this._partial = _partial;
41
41
  this._logger = _logger;
42
42
  this.joinedTables = [];
43
+ this.where = (callback) => {
44
+ this._filter = callback(...this.joins);
45
+ return this;
46
+ };
43
47
  this.joinedTables.push({
44
48
  table: onTable.tableName(),
45
49
  columns: joins[1],
@@ -64,7 +68,7 @@ class JoinBuilder {
64
68
  const queryBuilder = select_1.default
65
69
  .from(this.rootTable, this._partial)
66
70
  .distinct(this._distinct)
67
- .joined2(this.joinedTables)
71
+ .joined(this.joinedTables)
68
72
  .limit(this._props.limit)
69
73
  .offset(this._props.offset)
70
74
  .filteredBy(this._filter)
@@ -29,7 +29,7 @@ export default class SelectTRB<TTable extends AbstractTable<TTable>, TPartial ex
29
29
  leftJoin<TJoinedTable extends AbstractTable<TJoinedTable>, TJoinedPartial extends EmptyPartial<TJoinedTable> = undefined>(value: TJoinedTable, callback: (...args: [TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TTable>>, TableIfPartialIsUndefined<TJoinedPartial, ExtractPartialObjectFromColumns<TJoinedTable>>]) => Expr, partial?: TJoinedPartial): JoinBuilder<[TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TTable>>, TableIfPartialIsUndefined<TJoinedPartial, ExtractPartialObjectFromColumns<TJoinedTable>>], [FullOrPartial<TTable, TPartial>, FullOrPartial<TJoinedTable, TJoinedPartial>]>;
30
30
  rightJoin<TJoinedTable extends AbstractTable<TJoinedTable>, TJoinedPartial extends EmptyPartial<TJoinedTable> = undefined>(value: TJoinedTable, callback: (...args: [TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TTable>>, TableIfPartialIsUndefined<TJoinedPartial, ExtractPartialObjectFromColumns<TJoinedTable>>]) => Expr, partial?: TJoinedPartial): JoinBuilder<[TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TTable>>, TableIfPartialIsUndefined<TJoinedPartial, ExtractPartialObjectFromColumns<TJoinedTable>>], [FullOrPartial<TTable, TPartial>, FullOrPartial<TJoinedTable, TJoinedPartial>]>;
31
31
  fullJoin<TJoinedTable extends AbstractTable<TJoinedTable>, TJoinedPartial extends EmptyPartial<TJoinedTable> = undefined>(value: TJoinedTable, callback: (...args: [TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TTable>>, TableIfPartialIsUndefined<TJoinedPartial, ExtractPartialObjectFromColumns<TJoinedTable>>]) => Expr, partial?: TJoinedPartial): JoinBuilder<[TableIfPartialIsUndefined<TPartial, ExtractPartialObjectFromColumns<TTable>>, TableIfPartialIsUndefined<TJoinedPartial, ExtractPartialObjectFromColumns<TJoinedTable>>], [FullOrPartial<TTable, TPartial>, FullOrPartial<TJoinedTable, TJoinedPartial>]>;
32
- where: (expr: Expr) => SelectTRB<TTable, TPartial>;
32
+ where: (expr: Expr) => Omit<this, 'leftJoin' | 'rightJoin' | 'innerJoin' | 'fullJoin'>;
33
33
  orderBy<TColumnType extends ColumnType>(callback: (table: TTable) => AbstractColumn<TColumnType, boolean, boolean>, order: Order): SelectTRB<TTable, TPartial>;
34
34
  distinct: (column: AbstractColumn<ColumnType<any>, boolean, boolean>) => SelectTRB<TTable, TPartial>;
35
35
  limit: (limit: number) => SelectTRB<TTable, TPartial>;
@@ -39,25 +39,25 @@ export default class SelectTRB<TTable extends AbstractTable<TTable>, TPartial ex
39
39
  */
40
40
  innerJoinV1<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable>>(table: {
41
41
  new (db: DB): IToTable;
42
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, PartialFor<TTable>, IToPartial>;
42
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial extends undefined ? {} : TPartial, IToPartial>;
43
43
  /**
44
44
  * @deprecated Since version 0.11.0. Will be deleted in version 0.12.0. Use {@link leftJoin()} instead
45
45
  */
46
46
  leftJoinV1<TColumn extends ColumnType<any>, IToColumn extends ColumnType<any>, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
47
47
  new (db: DB): IToTable;
48
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean, TTable>, to: (table: IToTable) => AbstractColumn<IToColumn, boolean, boolean, IToTable>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, PartialFor<TTable>, IToPartial>;
48
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean, TTable>, to: (table: IToTable) => AbstractColumn<IToColumn, boolean, boolean, IToTable>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial extends undefined ? {} : TPartial, IToPartial>;
49
49
  /**
50
50
  * @deprecated Since version 0.11.0. Will be deleted in version 0.12.0. Use {@link rightJoin()} instead
51
51
  */
52
52
  rightJoinV1<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
53
53
  new (db: DB): IToTable;
54
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, PartialFor<TTable>, IToPartial>;
54
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial extends undefined ? {} : TPartial, IToPartial>;
55
55
  /**
56
56
  * @deprecated Since version 0.11.0. Will be deleted in version 0.12.0. Use {@link fullJoin()} instead
57
57
  */
58
58
  fullJoinV1<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
59
59
  new (db: DB): IToTable;
60
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, PartialFor<TTable>, IToPartial>;
60
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial extends undefined ? {} : TPartial, IToPartial>;
61
61
  execute: () => Promise<([keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>)[]>;
62
62
  protected _execute: () => Promise<Array<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>>;
63
63
  }
@@ -37,7 +37,7 @@ class AbstractJoined {
37
37
  };
38
38
  this.execute = async () => {
39
39
  const queryBuilder = select_1.default
40
- .from(this._table, this._partial)
40
+ .fromV1(this._table, this._partial)
41
41
  .distinct(this._distinct)
42
42
  .joined(this.joins())
43
43
  .limit(this._props.limit)
@@ -1,9 +1,12 @@
1
1
  import { AbstractColumn } from '../../../columns/column';
2
2
  import ColumnType from '../../../columns/types/columnType';
3
3
  import { AbstractTable } from '../../../tables';
4
- import SelectFrom from './selectFrom';
4
+ import SelectFrom, { SelectFromV1 } from './selectFrom';
5
5
  export default class Select {
6
6
  static from: <TTable extends AbstractTable<TTable>, TType extends ColumnType<any>, TColumn extends AbstractColumn<TType, boolean, boolean, TTable>, T extends {
7
7
  [name: string]: TColumn;
8
8
  } = {}>(table: AbstractTable<TTable>, partial?: T | undefined) => SelectFrom;
9
+ static fromV1: <TTable extends AbstractTable<TTable>, TType extends ColumnType<any>, TColumn extends AbstractColumn<TType, boolean, boolean, TTable>, T extends {
10
+ [name: string]: TColumn;
11
+ } = {}>(table: AbstractTable<TTable>, partial?: T | undefined) => SelectFromV1;
9
12
  }
@@ -1,10 +1,30 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
23
  };
5
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
+ const selectAggregatorV1_1 = __importDefault(require("../../aggregators/selectAggregatorV1"));
6
26
  const selectAggregator_1 = __importDefault(require("../../aggregators/selectAggregator"));
7
- const selectFrom_1 = __importDefault(require("./selectFrom"));
27
+ const selectFrom_1 = __importStar(require("./selectFrom"));
8
28
  class Select {
9
29
  }
10
30
  exports.default = Select;
@@ -14,3 +34,9 @@ Select.from = (table, partial) => {
14
34
  aggregator.appendFrom(table.tableName());
15
35
  return new selectFrom_1.default(aggregator);
16
36
  };
37
+ // eslint-disable-next-line max-len
38
+ Select.fromV1 = (table, partial) => {
39
+ const aggregator = new selectAggregatorV1_1.default(table, partial);
40
+ aggregator.appendFrom(table.tableName());
41
+ return new selectFrom_1.SelectFromV1(aggregator);
42
+ };
@@ -1,29 +1,43 @@
1
- import { JoinType } from '@/builders/highLvlBuilders/joins/selectJoinBuilder';
2
- import AbstractTable from '@/tables/abstractTable';
1
+ import AbstractTable from '../../../tables/abstractTable';
2
+ import SelectAggregatorV1 from '../../aggregators/selectAggregatorV1';
3
+ import { JoinType } from '../../highLvlBuilders/joins/selectJoinBuilder';
3
4
  import { AbstractColumn } from '../../../columns/column';
4
5
  import ColumnType from '../../../columns/types/columnType';
5
6
  import SelectAggregator from '../../aggregators/selectAggregator';
6
7
  import Order from '../../highLvlBuilders/order';
7
8
  import Join from '../../joinBuilders/join';
8
9
  import Expr from '../../requestBuilders/where/where';
9
- import SelectJoined from './selectJoined';
10
- import WhereSelect from './whereSelect';
10
+ import SelectJoined, { SelectJoinedV1 } from './selectJoined';
11
+ import WhereSelect, { WhereSelectV1 } from './whereSelect';
11
12
  export default class SelectFrom {
12
13
  private _aggregator;
13
14
  constructor(aggregator: SelectAggregator);
15
+ joined: (joins: Array<JoinType<AbstractTable<any>>>) => SelectJoined;
16
+ limit: (limit?: number | undefined) => SelectFrom;
17
+ offset: (offset?: number | undefined) => SelectFrom;
18
+ orderBy: (orderBy?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined, order?: Order | undefined) => SelectFrom;
19
+ distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined) => SelectFrom;
20
+ filteredBy: (filters: Expr) => WhereSelect;
21
+ build: () => {
22
+ query: string;
23
+ values: any[];
24
+ };
25
+ }
26
+ export declare class SelectFromV1 {
27
+ private _aggregator;
28
+ constructor(aggregator: SelectAggregatorV1);
14
29
  joined: (joins: {
15
30
  join: Join<any>;
16
31
  partial?: {
17
32
  [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, any>;
18
33
  } | undefined;
19
34
  id?: number | undefined;
20
- }[]) => SelectJoined;
21
- joined2: (joins: Array<JoinType<AbstractTable<any>>>) => SelectJoined;
22
- limit: (limit?: number | undefined) => SelectFrom;
23
- offset: (offset?: number | undefined) => SelectFrom;
24
- orderBy: (orderBy?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined, order?: Order | undefined) => SelectFrom;
25
- distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined) => SelectFrom;
26
- filteredBy: (filters: Expr) => WhereSelect;
35
+ }[]) => SelectJoinedV1;
36
+ limit: (limit?: number | undefined) => SelectFromV1;
37
+ offset: (offset?: number | undefined) => SelectFromV1;
38
+ orderBy: (orderBy?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined, order?: Order | undefined) => SelectFromV1;
39
+ distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined) => SelectFromV1;
40
+ filteredBy: (filters: Expr) => WhereSelectV1;
27
41
  build: () => {
28
42
  query: string;
29
43
  values: any[];
@@ -1,14 +1,30 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
4
20
  };
5
21
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const selectJoined_1 = __importDefault(require("./selectJoined"));
7
- const whereSelect_1 = __importDefault(require("./whereSelect"));
22
+ exports.SelectFromV1 = void 0;
23
+ const selectJoined_1 = __importStar(require("./selectJoined"));
24
+ const whereSelect_1 = __importStar(require("./whereSelect"));
8
25
  class SelectFrom {
9
26
  constructor(aggregator) {
10
27
  this.joined = (joins) => new selectJoined_1.default(this._aggregator).apply(joins);
11
- this.joined2 = (joins) => new selectJoined_1.default(this._aggregator).apply2(joins);
12
28
  this.limit = (limit) => {
13
29
  this._aggregator.limit(limit);
14
30
  return this;
@@ -33,3 +49,30 @@ class SelectFrom {
33
49
  }
34
50
  }
35
51
  exports.default = SelectFrom;
52
+ class SelectFromV1 {
53
+ constructor(aggregator) {
54
+ this.joined = (joins) => new selectJoined_1.SelectJoinedV1(this._aggregator).apply(joins);
55
+ this.limit = (limit) => {
56
+ this._aggregator.limit(limit);
57
+ return this;
58
+ };
59
+ this.offset = (offset) => {
60
+ this._aggregator.offset(offset);
61
+ return this;
62
+ };
63
+ this.orderBy = (orderBy, order) => {
64
+ this._aggregator.orderBy(orderBy, order);
65
+ return this;
66
+ };
67
+ this.distinct = (column) => {
68
+ if (column) {
69
+ this._aggregator.distinct(column);
70
+ }
71
+ return this;
72
+ };
73
+ this.filteredBy = (filters) => new whereSelect_1.WhereSelectV1(this._aggregator).apply(filters);
74
+ this.build = () => this._aggregator.buildQuery();
75
+ this._aggregator = aggregator;
76
+ }
77
+ }
78
+ exports.SelectFromV1 = SelectFromV1;