drizzle-orm 0.10.5 → 0.10.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 (97) hide show
  1. package/README.md +12 -2
  2. package/builders/aggregators/deleteAggregator.d.ts +5 -1
  3. package/builders/aggregators/deleteAggregator.js +5 -2
  4. package/builders/aggregators/insertAggregator.d.ts +5 -1
  5. package/builders/aggregators/insertAggregator.js +18 -9
  6. package/builders/aggregators/selectAggregator.d.ts +6 -1
  7. package/builders/aggregators/selectAggregator.js +10 -6
  8. package/builders/aggregators/updateAggregator.d.ts +5 -1
  9. package/builders/aggregators/updateAggregator.js +9 -3
  10. package/builders/highLvlBuilders/deleteRequestBuilder.js +5 -2
  11. package/builders/highLvlBuilders/insertRequestBuilder.js +5 -2
  12. package/builders/highLvlBuilders/selectRequestBuilder.js +7 -2
  13. package/builders/highLvlBuilders/updateRequestBuilder.js +6 -2
  14. package/builders/joinBuilders/builders/abstractJoinBuilder.js +7 -3
  15. package/builders/lowLvlBuilders/delets/deleteFilter.d.ts +4 -1
  16. package/builders/lowLvlBuilders/delets/deleteFrom.d.ts +4 -1
  17. package/builders/lowLvlBuilders/inserts/insertInto.d.ts +4 -1
  18. package/builders/lowLvlBuilders/inserts/onConflictInsert.d.ts +4 -1
  19. package/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +4 -1
  20. package/builders/lowLvlBuilders/selects/selectFrom.d.ts +4 -1
  21. package/builders/lowLvlBuilders/selects/selectJoined.d.ts +4 -1
  22. package/builders/lowLvlBuilders/selects/whereSelect.d.ts +4 -1
  23. package/builders/lowLvlBuilders/updates/updateIn.d.ts +4 -1
  24. package/builders/lowLvlBuilders/updates/whereSelect.d.ts +4 -1
  25. package/builders/lowLvlBuilders/updates/whereSet.d.ts +4 -1
  26. package/builders/requestBuilders/updates/combine.d.ts +4 -1
  27. package/builders/requestBuilders/updates/combine.js +8 -3
  28. package/builders/requestBuilders/updates/increment.d.ts +4 -1
  29. package/builders/requestBuilders/updates/increment.js +4 -1
  30. package/builders/requestBuilders/updates/setObjects.d.ts +4 -1
  31. package/builders/requestBuilders/updates/setObjects.js +5 -1
  32. package/builders/requestBuilders/updates/updates.d.ts +4 -1
  33. package/builders/requestBuilders/where/and.d.ts +6 -1
  34. package/builders/requestBuilders/where/and.js +9 -3
  35. package/builders/requestBuilders/where/const.d.ts +4 -1
  36. package/builders/requestBuilders/where/const.js +6 -4
  37. package/builders/requestBuilders/where/constArray.d.ts +4 -1
  38. package/builders/requestBuilders/where/constArray.js +11 -5
  39. package/builders/requestBuilders/where/eqWhere.d.ts +6 -1
  40. package/builders/requestBuilders/where/eqWhere.js +6 -1
  41. package/builders/requestBuilders/where/greater.d.ts +6 -1
  42. package/builders/requestBuilders/where/greater.js +6 -1
  43. package/builders/requestBuilders/where/greaterEq.d.ts +6 -1
  44. package/builders/requestBuilders/where/greaterEq.js +6 -1
  45. package/builders/requestBuilders/where/in.d.ts +6 -1
  46. package/builders/requestBuilders/where/in.js +6 -1
  47. package/builders/requestBuilders/where/isNull.d.ts +6 -1
  48. package/builders/requestBuilders/where/isNull.js +5 -1
  49. package/builders/requestBuilders/where/less.d.ts +6 -1
  50. package/builders/requestBuilders/where/less.js +6 -1
  51. package/builders/requestBuilders/where/lessEq.d.ts +6 -1
  52. package/builders/requestBuilders/where/lessEq.js +6 -1
  53. package/builders/requestBuilders/where/like.d.ts +6 -1
  54. package/builders/requestBuilders/where/like.js +6 -1
  55. package/builders/requestBuilders/where/notEqWhere.d.ts +6 -1
  56. package/builders/requestBuilders/where/notEqWhere.js +6 -1
  57. package/builders/requestBuilders/where/or.d.ts +6 -1
  58. package/builders/requestBuilders/where/or.js +9 -3
  59. package/builders/requestBuilders/where/rawWhere.d.ts +4 -1
  60. package/builders/requestBuilders/where/rawWhere.js +2 -1
  61. package/builders/requestBuilders/where/var.d.ts +6 -1
  62. package/builders/requestBuilders/where/var.js +4 -1
  63. package/builders/requestBuilders/where/where.d.ts +6 -1
  64. package/builders/requestBuilders/where/where.js +1 -0
  65. package/columns/types/pgEnum.js +1 -1
  66. package/columns/types/pgJsonb.js +3 -1
  67. package/columns/types/pgText.js +1 -1
  68. package/columns/types/pgTimestamp.js +1 -1
  69. package/columns/types/pgTimestamptz.js +1 -1
  70. package/columns/types/pgVarChar.js +1 -1
  71. package/db/session.d.ts +2 -2
  72. package/db/session.js +2 -2
  73. package/docs/cases/simple_delete.js +5 -3
  74. package/docs/cases/simple_insert.js +7 -9
  75. package/docs/cases/simple_join.js +9 -7
  76. package/docs/cases/simple_select.js +4 -2
  77. package/docs/cases/simple_update.js +5 -2
  78. package/docs/tables/usersTable.d.ts +11 -10
  79. package/docs/tables/usersTable.js +5 -4
  80. package/package.json +1 -1
  81. package/serializer/serializer.js +4 -1
  82. package/tables/abstractTable.d.ts +2 -2
  83. package/tables/aggregators.d.ts +27 -0
  84. package/tables/aggregators.js +56 -0
  85. package/tables/migrationsTable.d.ts +1 -1
  86. package/test.d.ts +0 -1
  87. package/test.js +44 -224
  88. package/data/tables/citiesTable.d.ts +0 -14
  89. package/data/tables/citiesTable.js +0 -17
  90. package/data/tables/userGroupsTable.d.ts +0 -7
  91. package/data/tables/userGroupsTable.js +0 -15
  92. package/data/tables/usersTable.d.ts +0 -16
  93. package/data/tables/usersTable.js +0 -31
  94. package/data/tables/usersToUserGroups.d.ts +0 -7
  95. package/data/tables/usersToUserGroups.js +0 -17
  96. package/data/types/rolesType.d.ts +0 -1
  97. package/data/types/rolesType.js +0 -6
@@ -1,20 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class And extends where_1.default {
5
6
  constructor(expressions) {
6
7
  super();
7
- this.toQuery = () => {
8
+ this.toQuery = (position, tableCache) => {
9
+ let nextPosition = position || 1;
8
10
  const result = ['('];
11
+ const valuesResult = [];
9
12
  for (let i = 0; i < this.expressions.length; i += 1) {
10
13
  const expression = this.expressions[i];
11
- result.push(expression.toQuery());
14
+ const expressionResult = expression.toQuery(nextPosition, tableCache);
15
+ valuesResult.push(...expressionResult.values);
16
+ result.push(expressionResult.query);
17
+ nextPosition += expressionResult.values.length;
12
18
  if (i < this.expressions.length - 1) {
13
19
  result.push(' and ');
14
20
  }
15
21
  }
16
22
  result.push(')');
17
- return result.join('');
23
+ return { query: result.join(''), values: valuesResult };
18
24
  };
19
25
  this.expressions = expressions;
20
26
  }
@@ -2,5 +2,8 @@ import Expr from './where';
2
2
  export default class Const extends Expr {
3
3
  private value;
4
4
  constructor(value: any);
5
- toQuery: () => string;
5
+ toQuery: (position?: number | undefined) => {
6
+ query: string;
7
+ values: Array<any>;
8
+ };
6
9
  }
@@ -1,18 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable no-return-assign */
3
4
  const ecranate_1 = require("../../../utils/ecranate");
4
5
  const where_1 = require("./where");
5
6
  class Const extends where_1.default {
6
7
  constructor(value) {
7
8
  super();
8
- this.toQuery = () => {
9
+ this.toQuery = (position) => {
10
+ const nextPosition = position || 1;
9
11
  if (this.value instanceof Date) {
10
- return `'${this.value.toISOString()}'`;
12
+ return { query: `$${nextPosition}`, values: [`${this.value.toISOString()}`] };
11
13
  }
12
14
  if (ecranate_1.shouldEcranate(this.value)) {
13
- return `'${this.value.toString()}'`;
15
+ return { query: `$${nextPosition}`, values: [`${this.value.toString()}`] };
14
16
  }
15
- return this.value.toString();
17
+ return { query: `$${nextPosition}`, values: [this.value] };
16
18
  };
17
19
  this.value = value;
18
20
  }
@@ -2,5 +2,8 @@ import Expr from './where';
2
2
  export default class ConstArray extends Expr {
3
3
  private values;
4
4
  constructor(values: Array<any>);
5
- toQuery: () => string;
5
+ toQuery: (position?: number | undefined) => {
6
+ query: string;
7
+ values: Array<any>;
8
+ };
6
9
  }
@@ -5,24 +5,30 @@ const where_1 = require("./where");
5
5
  class ConstArray extends where_1.default {
6
6
  constructor(values) {
7
7
  super();
8
- this.toQuery = () => {
8
+ this.toQuery = (position) => {
9
+ let nextPosition = position || 1;
9
10
  const finalArray = [];
11
+ const finalValues = [];
10
12
  for (let i = 0; i < this.values.length; i += 1) {
11
13
  const value = this.values[i];
12
14
  if (value instanceof Date) {
13
- return `'${value.toISOString()}'`;
15
+ finalArray.push(`$${nextPosition}`);
16
+ finalValues.push(`${value.toISOString()}`);
14
17
  }
15
18
  if (ecranate_1.shouldEcranate(value)) {
16
- finalArray.push(`'${value.toString()}'`);
19
+ finalArray.push(`$${nextPosition}`);
20
+ finalValues.push(`${value.toString()}`);
17
21
  }
18
22
  else {
19
- finalArray.push(value.toString());
23
+ finalArray.push(`$${nextPosition}`);
24
+ finalValues.push(value);
20
25
  }
21
26
  if (i < this.values.length - 1) {
22
27
  finalArray.push(',');
23
28
  }
29
+ nextPosition += 1;
24
30
  }
25
- return finalArray.join('');
31
+ return { query: finalArray.join(','), values: finalValues };
26
32
  };
27
33
  this.values = values;
28
34
  }
@@ -3,5 +3,10 @@ export default class EqWhere extends Expr {
3
3
  private left;
4
4
  private right;
5
5
  constructor(left: Expr, right: Expr);
6
- toQuery: () => string;
6
+ toQuery: (position?: number | undefined, tableCache?: {
7
+ [tableName: string]: string;
8
+ } | undefined) => {
9
+ query: string;
10
+ values: Array<any>;
11
+ };
7
12
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class EqWhere extends where_1.default {
5
6
  constructor(left, right) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()}=${this.right.toQuery()}`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query}=${rightPreparedValues.query}`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -6,5 +6,10 @@ export default class Greater extends Expr {
6
6
  left: Expr;
7
7
  right: Expr;
8
8
  });
9
- toQuery: () => string;
9
+ toQuery: (position: number, tableCache?: {
10
+ [tableName: string]: string;
11
+ } | undefined) => {
12
+ query: string;
13
+ values: Array<any>;
14
+ };
10
15
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class Greater extends where_1.default {
5
6
  constructor({ left, right }) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()} > ${this.right.toQuery()}`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query} > ${rightPreparedValues.query}`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -6,5 +6,10 @@ export default class GreaterEq extends Expr {
6
6
  left: Expr;
7
7
  right: Expr;
8
8
  });
9
- toQuery: () => string;
9
+ toQuery: (position: number, tableCache?: {
10
+ [tableName: string]: string;
11
+ } | undefined) => {
12
+ query: string;
13
+ values: Array<any>;
14
+ };
10
15
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class GreaterEq extends where_1.default {
5
6
  constructor({ left, right }) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()} >= ${this.right.toQuery()}`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query} >= ${rightPreparedValues.query}`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -3,5 +3,10 @@ export default class In extends Expr {
3
3
  private left;
4
4
  private right;
5
5
  constructor(left: Expr, right: Expr);
6
- toQuery: () => string;
6
+ toQuery: (position?: number | undefined, tableCache?: {
7
+ [tableName: string]: string;
8
+ } | undefined) => {
9
+ query: string;
10
+ values: Array<any>;
11
+ };
7
12
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class In extends where_1.default {
5
6
  constructor(left, right) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()} in (${this.right.toQuery()})`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query} in (${rightPreparedValues.query})`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -2,5 +2,10 @@ import Expr from './where';
2
2
  export default class IsNull extends Expr {
3
3
  private left;
4
4
  constructor(left: Expr);
5
- toQuery: () => string;
5
+ toQuery: (position?: number | undefined, tableCache?: {
6
+ [tableName: string]: string;
7
+ } | undefined) => {
8
+ query: string;
9
+ values: Array<any>;
10
+ };
6
11
  }
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class IsNull extends where_1.default {
5
6
  constructor(left) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()} is null`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
10
+ return { query: `${leftPreparedValues.query} is null`, values: leftPreparedValues.values };
11
+ };
8
12
  this.left = left;
9
13
  }
10
14
  }
@@ -6,5 +6,10 @@ export default class Less extends Expr {
6
6
  left: Expr;
7
7
  right: Expr;
8
8
  });
9
- toQuery: () => string;
9
+ toQuery: (position?: number | undefined, tableCache?: {
10
+ [tableName: string]: string;
11
+ } | undefined) => {
12
+ query: string;
13
+ values: Array<any>;
14
+ };
10
15
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class Less extends where_1.default {
5
6
  constructor({ left, right }) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()} < ${this.right.toQuery()}`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query} < ${rightPreparedValues.query}`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -6,5 +6,10 @@ export default class LessEq extends Expr {
6
6
  left: Expr;
7
7
  right: Expr;
8
8
  });
9
- toQuery: () => string;
9
+ toQuery: (position?: number | undefined, tableCache?: {
10
+ [tableName: string]: string;
11
+ } | undefined) => {
12
+ query: string;
13
+ values: Array<any>;
14
+ };
10
15
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class LessEq extends where_1.default {
5
6
  constructor({ left, right }) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()} <= ${this.right.toQuery()}`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query} <= ${rightPreparedValues.query}`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -3,5 +3,10 @@ export default class Like extends Expr {
3
3
  private left;
4
4
  private right;
5
5
  constructor(left: Expr, right: Expr);
6
- toQuery: () => string;
6
+ toQuery: (position?: number | undefined, tableCache?: {
7
+ [tableName: string]: string;
8
+ } | undefined) => {
9
+ query: string;
10
+ values: Array<any>;
11
+ };
7
12
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class Like extends where_1.default {
5
6
  constructor(left, right) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()} like ${this.right.toQuery()}`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query} like ${rightPreparedValues.query}`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -3,5 +3,10 @@ export default class NotEqWhere extends Expr {
3
3
  private left;
4
4
  private right;
5
5
  constructor(left: Expr, right: Expr);
6
- toQuery: () => string;
6
+ toQuery: (position?: number | undefined, tableCache?: {
7
+ [tableName: string]: string;
8
+ } | undefined) => {
9
+ query: string;
10
+ values: Array<any>;
11
+ };
7
12
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class NotEqWhere extends where_1.default {
5
6
  constructor(left, right) {
6
7
  super();
7
- this.toQuery = () => `${this.left.toQuery()}!=${this.right.toQuery()}`;
8
+ this.toQuery = (position, tableCache) => {
9
+ const rightPreparedValues = this.right.toQuery(position, tableCache);
10
+ const leftPreparedValues = this.left.toQuery(position, tableCache);
11
+ return { query: `${leftPreparedValues.query}!=${rightPreparedValues.query}`, values: [...leftPreparedValues.values, ...rightPreparedValues.values] };
12
+ };
8
13
  this.left = left;
9
14
  this.right = right;
10
15
  }
@@ -2,5 +2,10 @@ import Expr from './where';
2
2
  export default class Or extends Expr {
3
3
  private expressions;
4
4
  constructor(expressions: Expr[]);
5
- toQuery: () => string;
5
+ toQuery: (position?: number | undefined, tableCache?: {
6
+ [tableName: string]: string;
7
+ } | undefined) => {
8
+ query: string;
9
+ values: Array<any>;
10
+ };
6
11
  }
@@ -1,20 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class Or extends where_1.default {
5
6
  constructor(expressions) {
6
7
  super();
7
- this.toQuery = () => {
8
+ this.toQuery = (position, tableCache) => {
9
+ let nextPosition = position || 1;
8
10
  const result = ['('];
11
+ const valuesResult = [];
9
12
  for (let i = 0; i < this.expressions.length; i += 1) {
10
13
  const expression = this.expressions[i];
11
- result.push(expression.toQuery());
14
+ const expressionResult = expression.toQuery(nextPosition, tableCache);
15
+ valuesResult.push(...expressionResult.values);
16
+ result.push(expressionResult.query);
17
+ nextPosition += expressionResult.values.length;
12
18
  if (i < this.expressions.length - 1) {
13
19
  result.push(' or ');
14
20
  }
15
21
  }
16
22
  result.push(')');
17
- return result.join('');
23
+ return { query: result.join(''), values: valuesResult };
18
24
  };
19
25
  this.expressions = expressions;
20
26
  }
@@ -2,5 +2,8 @@ import Expr from './where';
2
2
  export default class RawWhere extends Expr {
3
3
  private custom;
4
4
  constructor(custom: string);
5
- toQuery: () => string;
5
+ toQuery: () => {
6
+ query: string;
7
+ values: Array<any>;
8
+ };
6
9
  }
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const where_1 = require("./where");
4
5
  class RawWhere extends where_1.default {
5
6
  constructor(custom) {
6
7
  super();
7
8
  this.custom = custom;
8
- this.toQuery = () => this.custom;
9
+ this.toQuery = () => ({ query: this.custom, values: [] });
9
10
  }
10
11
  }
11
12
  exports.default = RawWhere;
@@ -4,5 +4,10 @@ import Expr from './where';
4
4
  export default class Var<T extends AbstractColumn<ColumnType<any>, boolean, boolean>> extends Expr {
5
5
  private column;
6
6
  constructor(column: T);
7
- toQuery: () => string;
7
+ toQuery: (postition?: number | undefined, tableCache?: {
8
+ [tableName: string]: string;
9
+ } | undefined) => {
10
+ query: string;
11
+ values: Array<any>;
12
+ };
8
13
  }
@@ -5,7 +5,10 @@ const where_1 = require("./where");
5
5
  class Var extends where_1.default {
6
6
  constructor(column) {
7
7
  super();
8
- this.toQuery = () => `${this.column.getParentName()}.${ecranate_1.ecranate(this.column.getColumnName())}`;
8
+ this.toQuery = (postition, tableCache) => {
9
+ const tableName = tableCache && tableCache[this.column.getParentName()] ? tableCache[this.column.getParentName()] : this.column.getParentName();
10
+ return { query: `${tableName}.${ecranate_1.ecranate(this.column.getColumnName())}`, values: [] };
11
+ };
9
12
  this.column = column;
10
13
  }
11
14
  }
@@ -1,3 +1,8 @@
1
1
  export default abstract class Expr {
2
- abstract toQuery(): string;
2
+ abstract toQuery(position?: number, tableCache?: {
3
+ [tableName: string]: string;
4
+ }): {
5
+ query: string;
6
+ values: Array<any>;
7
+ };
3
8
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-classes-per-file */
3
4
  class Expr {
4
5
  }
5
6
  exports.default = Expr;
@@ -5,7 +5,7 @@ class PgEnum extends columnType_1.default {
5
5
  constructor(dbName) {
6
6
  super();
7
7
  this.getDbName = () => this.dbName;
8
- this.insertStrategy = (value) => `'${value}'`;
8
+ this.insertStrategy = (value) => `${value}`;
9
9
  this.dbName = dbName;
10
10
  }
11
11
  selectStrategy(value) {
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable max-len */
3
4
  const columnType_1 = require("./columnType");
4
5
  class PgJsonb extends columnType_1.default {
5
6
  constructor() {
6
7
  super();
7
8
  this.getDbName = () => this.dbName;
8
- this.insertStrategy = (value) => `'${JSON.stringify(value).replace(/'/g, "''")}'::jsonb`;
9
+ // public insertStrategy = (value: TCodeType): string => `'${JSON.stringify(value).replace(/'/g, "''")}'::jsonb`;
10
+ this.insertStrategy = (value) => `${JSON.stringify(value).replace(/'/g, "''")}`;
9
11
  this.dbName = 'JSONB';
10
12
  }
11
13
  selectStrategy(value) {
@@ -5,7 +5,7 @@ class PgText extends columnType_1.default {
5
5
  constructor() {
6
6
  super();
7
7
  this.getDbName = () => this.dbName;
8
- this.insertStrategy = (value) => `'${value.replace(/'/g, "''")}'`;
8
+ this.insertStrategy = (value) => `${value.replace(/'/g, "''")}`;
9
9
  this.dbName = 'TEXT';
10
10
  }
11
11
  selectStrategy(value) {
@@ -5,7 +5,7 @@ class PgTimestamp extends columnType_1.default {
5
5
  constructor() {
6
6
  super();
7
7
  this.getDbName = () => this.dbName;
8
- this.insertStrategy = (value) => `'${value.toISOString()}'`;
8
+ this.insertStrategy = (value) => `${value.toISOString()}`;
9
9
  this.dbName = 'timestamp without time zone';
10
10
  }
11
11
  selectStrategy(value) {
@@ -5,7 +5,7 @@ class PgTimestamptz extends columnType_1.default {
5
5
  constructor() {
6
6
  super();
7
7
  this.getDbName = () => this.dbName;
8
- this.insertStrategy = (value) => `'${value.toISOString()}'`;
8
+ this.insertStrategy = (value) => `${value.toISOString()}`;
9
9
  this.dbName = 'timestamp with time zone';
10
10
  }
11
11
  selectStrategy(value) {
@@ -5,7 +5,7 @@ class PgVarChar extends columnType_1.default {
5
5
  constructor(size) {
6
6
  super();
7
7
  this.getDbName = () => this.dbName;
8
- this.insertStrategy = (value) => `'${value.replace(/'/g, "''")}'`;
8
+ this.insertStrategy = (value) => `${value.replace(/'/g, "''")}`;
9
9
  this.size = size;
10
10
  if (size) {
11
11
  this.dbName = `character varying(${size})`;
package/db/session.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { Pool, QueryResult } from 'pg';
2
2
  export declare abstract class ISession {
3
- abstract execute(query: string): Promise<QueryResult<any>>;
3
+ abstract execute(query: string, values?: Array<any>): Promise<QueryResult<any>>;
4
4
  }
5
5
  export default class Session extends ISession {
6
6
  private pool;
7
7
  constructor(pool: Pool);
8
- execute(query: string): Promise<QueryResult<any>>;
8
+ execute(query: string, values?: Array<any>): Promise<QueryResult<any>>;
9
9
  }
package/db/session.js CHANGED
@@ -9,8 +9,8 @@ class Session extends ISession {
9
9
  super();
10
10
  this.pool = pool;
11
11
  }
12
- execute(query) {
13
- return this.pool.query(query);
12
+ async execute(query, values) {
13
+ return this.pool.query(query, values || []);
14
14
  }
15
15
  }
16
16
  exports.default = Session;
@@ -3,22 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  /* eslint-disable @typescript-eslint/no-unused-vars */
4
4
  const __1 = require("../..");
5
5
  const builders_1 = require("../../builders");
6
+ const consoleLogger_1 = require("../../logger/consoleLogger");
6
7
  const citiesTable_1 = require("../tables/citiesTable");
7
8
  const userGroupsTable_1 = require("../tables/userGroupsTable");
8
9
  const usersTable_1 = require("../tables/usersTable");
9
10
  (async () => {
10
11
  try {
11
12
  const db = await new __1.DbConnector()
12
- .connectionString('postgresql://postgres@127.0.0.1/drizzle')
13
+ .connectionString('postgresql://postgres@127.0.0.1/migrator')
13
14
  .connect();
15
+ db.useLogger(new consoleLogger_1.default());
14
16
  const usersTable = new usersTable_1.default(db);
15
17
  const citiesTable = new citiesTable_1.default(db);
16
18
  const userGroupsTable = new userGroupsTable_1.default(db);
17
19
  await usersTable.delete()
18
- .where(builders_1.eq(usersTable.id, 1))
20
+ .where(builders_1.eq(usersTable.id, 6))
19
21
  .execute();
20
22
  const deletedCities = await citiesTable.delete()
21
- .where(builders_1.eq(citiesTable.id, 2))
23
+ .where(builders_1.eq(citiesTable.id, 7))
22
24
  .all();
23
25
  const deletedUserGroup = await userGroupsTable.delete()
24
26
  .where(builders_1.eq(userGroupsTable.id, 3))