drizzle-orm 0.10.4 → 0.10.8

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 (83) 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/mappers/responseMapper.js +2 -2
  81. package/package.json +1 -1
  82. package/serializer/serializer.js +4 -1
  83. package/test.js +47 -13
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable @typescript-eslint/no-unused-vars */
4
- const create_1 = require("../../builders/lowLvlBuilders/create");
5
3
  const dbConnector_1 = require("../../db/dbConnector");
6
4
  const consoleLogger_1 = require("../../logger/consoleLogger");
7
5
  const citiesTable_1 = require("../tables/citiesTable");
@@ -10,19 +8,19 @@ const usersTable_1 = require("../tables/usersTable");
10
8
  (async () => {
11
9
  try {
12
10
  const db = await new dbConnector_1.default()
13
- .connectionString('postgresql://postgres@127.0.0.1/drizzle-docs')
11
+ .connectionString('postgresql://postgres@127.0.0.1/migrator')
14
12
  .connect();
15
13
  const usersTable = new usersTable_1.default(db);
16
14
  const citiesTable = new citiesTable_1.default(db);
17
15
  const userGroupsTable = new userGroupsTable_1.default(db);
18
- await db.session().execute(create_1.default.table(usersTable).build());
19
- await db.session().execute(create_1.default.table(citiesTable).build());
20
- await db.session().execute(create_1.default.table(userGroupsTable).build());
16
+ // await db.session().execute(Create.table(usersTable).build());
17
+ // await db.session().execute(Create.table(citiesTable).build());
18
+ // await db.session().execute(Create.table(userGroupsTable).build());
21
19
  db.useLogger(new consoleLogger_1.default());
22
20
  await usersTable.insert({
23
21
  decimalField: 12.4,
24
22
  createdAt: new Date(),
25
- // role: 'guest',
23
+ role: 'foo',
26
24
  }).execute();
27
25
  const insertedCities = await citiesTable.insert({
28
26
  foundationDate: new Date(),
@@ -41,11 +39,11 @@ const usersTable_1 = require("../tables/usersTable");
41
39
  const conflictInsertedUsers = await usersTable.insertMany([{
42
40
  decimalField: 12.4,
43
41
  createdAt: new Date(),
44
- // role: 'guest',
42
+ role: 'foo',
45
43
  }, {
46
44
  decimalField: 32.4,
47
45
  createdAt: new Date(),
48
- // role: 'admin',
46
+ role: 'foo',
49
47
  phone: '+1808',
50
48
  }])
51
49
  .onConflict((table) => table.phoneIndex, { isArchived: true }).all();
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  /* eslint-disable @typescript-eslint/no-unused-vars */
5
5
  const __1 = require("../..");
6
6
  const builders_1 = require("../../builders");
7
+ const consoleLogger_1 = require("../../logger/consoleLogger");
7
8
  const citiesTable_1 = require("../tables/citiesTable");
8
9
  const userGroupsTable_1 = require("../tables/userGroupsTable");
9
10
  const usersTable_1 = require("../tables/usersTable");
@@ -12,24 +13,25 @@ const usersToUserGroups_1 = require("../tables/usersToUserGroups");
12
13
  var _a, _b, _c, _d, _e, _f;
13
14
  try {
14
15
  const db = await new __1.DbConnector()
15
- .connectionString('postgresql://postgres@127.0.0.1/drizzle-docs')
16
+ .connectionString('postgresql://postgres@127.0.0.1/migrator')
16
17
  .connect();
18
+ db.useLogger(new consoleLogger_1.default());
17
19
  const usersTable = new usersTable_1.default(db);
18
20
  const citiesTable = new citiesTable_1.default(db);
19
21
  const usersToUserGroupsTable = new usersToUserGroups_1.default(db);
20
22
  const userGroupsTable = new userGroupsTable_1.default(db);
21
- await db.session().execute(__1.Create.table(usersTable).build());
22
- await db.session().execute(__1.Create.table(citiesTable).build());
23
- await db.session().execute(__1.Create.table(userGroupsTable).build());
24
- await db.session().execute(__1.Create.table(usersToUserGroupsTable).build());
23
+ // await db.session().execute(Create.table(usersTable).build());
24
+ // await db.session().execute(Create.table(citiesTable).build());
25
+ // await db.session().execute(Create.table(userGroupsTable).build());
26
+ // await db.session().execute(Create.table(usersToUserGroupsTable).build());
25
27
  const userRes = await usersTable.insertMany([{
26
28
  decimalField: 4.2,
27
29
  createdAt: new Date(),
28
- // role: 'guest',
30
+ role: 'foo',
29
31
  }, {
30
32
  decimalField: 5.8,
31
33
  createdAt: new Date(),
32
- // role: 'user',
34
+ role: 'foo',
33
35
  }]).all();
34
36
  const citiesRes = await citiesTable.insertMany([{
35
37
  foundationDate: new Date(),
@@ -5,17 +5,19 @@ const __1 = require("../..");
5
5
  const builders_1 = require("../../builders");
6
6
  const order_1 = require("../../builders/highLvlBuilders/order");
7
7
  const static_1 = require("../../builders/requestBuilders/where/static");
8
+ const consoleLogger_1 = require("../../logger/consoleLogger");
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();
14
15
  const usersTable = new usersTable_1.default(db);
16
+ db.useLogger(new consoleLogger_1.default());
15
17
  // select all
16
18
  const allSelect = await usersTable.select().all();
17
19
  // select first
18
- const firstSelect = await usersTable.select().findOne();
20
+ const firstSelect = await usersTable.select().all();
19
21
  // select using filters
20
22
  const eqSelect = await usersTable.select().where(builders_1.eq(usersTable.phone, 'hello')).all();
21
23
  const andSelect = await usersTable.select().where(builders_1.and([builders_1.eq(usersTable.phone, 'hello')])).all();
@@ -3,14 +3,16 @@ 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);
@@ -22,10 +24,11 @@ const usersTable_1 = require("../tables/usersTable");
22
24
  .where(builders_1.eq(citiesTable.location, 'USA'))
23
25
  .set({ metadata: { population: 1, connection: 'first' } })
24
26
  .all();
27
+ console.log(updatedCities);
25
28
  const updatedUserGroup = await userGroupsTable.update()
26
29
  .where(builders_1.eq(userGroupsTable.id, 1))
27
30
  .set({ description: 'updated description' })
28
- .findOne();
31
+ .all();
29
32
  }
30
33
  catch (e) {
31
34
  console.log(e);
@@ -1,15 +1,16 @@
1
1
  import AbstractTable from '../../tables/abstractTable';
2
- export declare const rolesEnum: import("../../types/type").default<"user" | "guest" | "admin">;
2
+ export declare const rolesEnum: import("../../types/type").default<"foo" | "bar" | "baz">;
3
3
  export default class UsersTable extends AbstractTable<UsersTable> {
4
- id: import("../..").Column<import("../../columns/types/pgSerial").default, true, true, this>;
5
- fullName: import("../..").Column<import("../..").PgText, true, false, this>;
6
- phone: import("../..").Column<import("../..").PgVarChar, true, false, this>;
7
- media: import("../..").Column<import("../..").PgJsonb<string[]>, true, false, this>;
8
- decimalField: import("../..").Column<import("../..").PgBigDecimal, false, false, this>;
9
- bigIntField: import("../..").Column<import("../..").PgBigInt, true, true, this>;
10
- createdAt: import("../..").Column<import("../..").PgTimestamp, false, false, this>;
11
- createdAtWithTimezone: import("../..").Column<import("../../columns/types/pgTimestamptz").default, true, false, this>;
12
- isArchived: import("../..").Column<import("../..").PgBoolean, true, false, this>;
4
+ id: import("../../columns/column").Column<import("../../columns/types/pgSerial").default, true, true, this>;
5
+ fullName: import("../../columns/column").Column<import("../..").PgText, true, false, this>;
6
+ phone: import("../../columns/column").Column<import("../..").PgVarChar, true, false, this>;
7
+ media: import("../../columns/column").Column<import("../..").PgJsonb<string[]>, true, false, this>;
8
+ decimalField: import("../../columns/column").Column<import("../..").PgBigDecimal, false, false, this>;
9
+ bigIntField: import("../../columns/column").Column<import("../..").PgBigInt, true, true, this>;
10
+ role: import("../../columns/column").Column<import("../../columns/types/pgEnum").default<"foo" | "bar" | "baz">, false, false, this>;
11
+ createdAt: import("../../columns/column").Column<import("../..").PgTimestamp, false, false, this>;
12
+ updatedAt: import("../../columns/column").Column<import("../..").PgTimestamp, true, false, this>;
13
+ isArchived: import("../../columns/column").Column<import("../..").PgBoolean, true, false, this>;
13
14
  phoneFullNameIndex: import("../../indexes/tableIndex").default;
14
15
  phoneIndex: import("../../indexes/tableIndex").default;
15
16
  tableName(): string;
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rolesEnum = void 0;
4
4
  /* eslint-disable max-classes-per-file */
5
5
  // import { Defaults } from '../../columns/column';
6
+ const column_1 = require("../../columns/column");
6
7
  const abstractTable_1 = require("../../tables/abstractTable");
7
8
  const type_1 = require("../../types/type");
8
9
  // import { rolesEnum } from '../types/rolesType';
9
- exports.rolesEnum = type_1.createEnum({ alias: 'test-enum', values: ['user', 'guest', 'admin'] });
10
+ exports.rolesEnum = type_1.createEnum({ alias: 'test-enum', values: ['foo', 'bar', 'baz'] });
10
11
  class UsersTable extends abstractTable_1.default {
11
12
  constructor() {
12
13
  super(...arguments);
@@ -16,10 +17,10 @@ class UsersTable extends abstractTable_1.default {
16
17
  this.media = this.jsonb('media');
17
18
  this.decimalField = this.decimal('test', { precision: 100, scale: 2 }).notNull();
18
19
  this.bigIntField = this.bigint('test1', 'max_bytes_53');
19
- // public role = this.type(rolesEnum, 'name_in_table', { notNull: true });
20
+ this.role = this.type(exports.rolesEnum, 'name_in_table').notNull();
20
21
  this.createdAt = this.timestamp('created_at').notNull();
21
- this.createdAtWithTimezone = this.timestamptz('created_at_time_zone');
22
- // public updatedAt = this.timestamp('updated_at').defaultValue(Defaults.CURRENT_TIMESTAMP);
22
+ // public createdAtWithTimezone = this.timestamptz('created_at');
23
+ this.updatedAt = this.timestamp('updated_at').defaultValue(column_1.Defaults.CURRENT_TIMESTAMP);
23
24
  this.isArchived = this.bool('is_archived').defaultValue(false);
24
25
  this.phoneFullNameIndex = this.index([this.phone, this.fullName]);
25
26
  this.phoneIndex = this.uniqueIndex(this.phone);
@@ -13,7 +13,7 @@ QueryResponseMapper.map = (mappedServiceToDb, queryResult, joinId) => {
13
13
  const column = mappedServiceToDb[key];
14
14
  const alias = `${column.getAlias()}${joinId ? `_${joinId}` : ''}`;
15
15
  const value = column.getColumnType().selectStrategy(row[alias]);
16
- mappedRow[key] = value;
16
+ mappedRow[key] = value === null ? undefined : value;
17
17
  });
18
18
  response.push(mappedRow);
19
19
  });
@@ -27,7 +27,7 @@ QueryResponseMapper.partialMap = (partial, queryResult, joinId) => {
27
27
  const column = partial[key];
28
28
  const alias = `${column.getAlias()}${joinId ? `_${joinId}` : ''}`;
29
29
  const value = column.getColumnType().selectStrategy(row[alias]);
30
- mappedRow[key] = value;
30
+ mappedRow[key] = value === null ? undefined : value;
31
31
  });
32
32
  response.push(mappedRow);
33
33
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.10.4",
3
+ "version": "0.10.8",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,9 +39,12 @@ class MigrationSerializer {
39
39
  type: value.getColumnType().getDbName(),
40
40
  primaryKey: !!value.primaryKeyName,
41
41
  // unique: !!value.uniqueKeyName,
42
- default: value.getDefaultValue() === null ? undefined : value.getDefaultValue(),
42
+ // default: value.getDefaultValue() === null ? undefined : value.getDefaultValue(),
43
43
  notNull: !value.isNullableFlag,
44
44
  };
45
+ if (value.getDefaultValue() !== undefined && value.getDefaultValue() !== null) {
46
+ columnToReturn[value.getColumnName()].default = value.getDefaultValue();
47
+ }
45
48
  if (value.uniqueKeyName) {
46
49
  const indexName = `${value.getParent().tableName()}_${value.getColumnName()}_index`;
47
50
  const indexColumnToReturn = {};
package/test.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const _1 = require(".");
4
- const builders_1 = require("./builders");
5
4
  const citiesTable_1 = require("./docs/tables/citiesTable");
6
5
  const usersTable_1 = require("./docs/tables/usersTable");
7
6
  const consoleLogger_1 = require("./logger/consoleLogger");
@@ -27,18 +26,53 @@ const fromTypeFile = (filepath) => {
27
26
  db.useLogger(new consoleLogger_1.default());
28
27
  const table = new usersTable_1.default(db);
29
28
  const citiesTable = new citiesTable_1.default(db);
30
- const res = await table.select().where(builders_1.eq(table.id, 1)).all();
31
- console.log(res);
32
- // const res1 = await citiesTable.select().leftJoin(
33
- // UsersTable,
34
- // (cities) => cities.userId,
35
- // (users) => users.id,
36
- // ).execute();
37
- // // eslint-disable-next-line array-callback-return
38
- // res1.map((city, user) => {
39
- // console.log(city);
40
- // console.log(user);
41
- // });
29
+ // const res = await table.insert({
30
+ // decimalField: 12.4,
31
+ // createdAt: new Date(),
32
+ // }).all();
33
+ // console.log(res);
34
+ const res1 = await citiesTable.select().leftJoin(usersTable_1.default, (cities) => cities.userId, (users) => users.id).execute();
35
+ // const res: QueryResult<any> = await db.session().execute('SELECT * FROM users');
36
+ // eslint-disable-next-line array-callback-return
37
+ res1.map((city, user) => {
38
+ console.log(city);
39
+ console.log(user.decimalField);
40
+ });
41
+ // const res = await db.session().execute('SELECT * FROM users WHERE user.id = $1', [1]);
42
+ // await table.update()
43
+ // .where({
44
+ // id: eq(1),
45
+ // })
46
+ // .set({
47
+ // phone: 'hello'
48
+ // })
49
+ // .all();
50
+ // await table.select()
51
+ // .where({
52
+ // and: {
53
+ // id: {
54
+ // eq: 1,
55
+ // },
56
+ // phone: {
57
+ // notEq: 'hello',
58
+ // },
59
+ // },
60
+ // })
61
+ // .all();
62
+ // await table.select()
63
+ // .where({
64
+ // and: {
65
+ // id: eq(1),
66
+ // phone: notEq('hello'),
67
+ // },
68
+ // })
69
+ // .all();
70
+ // await table.select()
71
+ // .where(and([
72
+ // eq(table.id, 1),
73
+ // notEq(table.phone, 'hello'),
74
+ // ]))
75
+ // .all();
42
76
  // await table.insertMany([{
43
77
  // decimalField: 12.4,
44
78
  // createdAt: new Date(),