drizzle-orm 0.10.38 → 0.10.41

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.
@@ -72,6 +72,7 @@ class SelectTRB extends abstractRequestBuilder_1.default {
72
72
  }
73
73
  if (this._logger) {
74
74
  this._logger.info(`Selecting from ${this._table.tableName()} using query:\n ${query}`);
75
+ this._logger.info(`Values for query:\n ${values}`);
75
76
  }
76
77
  const result = await this._session.execute(query, values);
77
78
  if (this.__partial) {
@@ -70,7 +70,7 @@ class UpdateTRB extends abstractRequestBuilder_1.default {
70
70
  }
71
71
  if (this._logger) {
72
72
  this._logger.info(`Updating ${this._table.tableName()} using query:\n ${query}`);
73
- console.log(values);
73
+ this._logger.info(`Values used for update:\n ${values}`);
74
74
  }
75
75
  const result = await this._session.execute(query, values);
76
76
  return responseMapper_1.default.map(this._mappedServiceToDb, result);
@@ -54,8 +54,6 @@ class AbstractJoined {
54
54
  catch (e) {
55
55
  throw new builderError_1.default(builderError_1.BuilderType.JOINED_SELECT, this._table.tableName(), Object.values(this._table.mapServiceToDb()), e, this._filter);
56
56
  }
57
- console.log(query);
58
- console.log(values);
59
57
  const result = await this._session.execute(query, values);
60
58
  return this.mapResponse(result);
61
59
  };
@@ -3,16 +3,18 @@ import DB from '../db/db';
3
3
  import { AbstractTable } from '../tables';
4
4
  import ColumnType from './types/columnType';
5
5
  import PgTimestamptz from './types/pgTimestamptz';
6
- export declare enum Defaults {
7
- CURRENT_TIMESTAMP = "CURRENT_TIMESTAMP"
8
- }
9
6
  declare type PgTimes = PgTimestamptz | PgTime | PgTimestamp;
10
- export declare type ExtractColumnType<T extends ColumnType> = T extends ColumnType<infer TCodeType> ? T extends PgTimes ? TCodeType | Defaults : TCodeType : never;
11
- export declare class RawValue {
12
- value: string;
13
- constructor(value: string);
7
+ declare class RawSqlValue {
8
+ readonly value: any;
9
+ readonly escape: boolean;
10
+ constructor(value: any, escape: boolean);
11
+ toJSON(): string;
14
12
  }
15
- export declare const rawValue: (value: string) => RawValue;
13
+ export declare const Defaults: {
14
+ CURRENT_TIMESTAMP: RawSqlValue;
15
+ };
16
+ export declare type ExtractColumnType<T extends ColumnType<any>> = T extends ColumnType<infer TCodeType> ? T extends PgTimes ? TCodeType : TCodeType : never;
17
+ export declare const rawValue: (value: string) => RawSqlValue;
16
18
  export declare abstract class AbstractColumn<T extends ColumnType, TNullable extends boolean = true, TAutoIncrement extends boolean = false, TParent extends AbstractTable<any> = any> {
17
19
  isNullableFlag: boolean;
18
20
  primaryKeyName?: string;
@@ -23,7 +25,7 @@ export declare abstract class AbstractColumn<T extends ColumnType, TNullable ext
23
25
  protected parentTableName: string;
24
26
  protected columnType: T;
25
27
  protected columnName: string;
26
- protected defaultParam: any;
28
+ protected defaultParam: RawSqlValue;
27
29
  protected referenced: AbstractColumn<T, boolean, boolean>;
28
30
  constructor(parent: TParent, columnName: string, columnType: T);
29
31
  getOnDelete: () => string | undefined;
@@ -39,18 +41,18 @@ export declare abstract class AbstractColumn<T extends ColumnType, TNullable ext
39
41
  onDelete?: 'CASCADE' | 'RESTRICT' | 'SET NULL' | 'SET DEFAULT';
40
42
  onUpdate?: 'CASCADE' | 'RESTRICT' | 'SET NULL' | 'SET DEFAULT';
41
43
  }): AbstractColumn<T, TNullable, TAutoIncrement, TParent>;
42
- defaultValue(value: ExtractColumnType<T> | RawValue): AbstractColumn<T, boolean, boolean, TParent>;
44
+ defaultValue(value: ExtractColumnType<T> | RawSqlValue): AbstractColumn<T, boolean, boolean, TParent>;
43
45
  abstract primaryKey(): AbstractColumn<T, boolean, boolean, TParent>;
44
46
  unique: () => this;
45
47
  abstract notNull(): AbstractColumn<T, boolean, boolean, TParent>;
46
48
  getColumnName: () => string;
47
49
  getReferenced: () => AbstractColumn<T, boolean, boolean, TParent>;
48
50
  getColumnType: () => T;
49
- getDefaultValue: () => any;
51
+ getDefaultValue: () => RawSqlValue;
50
52
  }
51
53
  export declare class Column<T extends ColumnType, TNullable extends boolean = true, TAutoIncrement extends boolean = false, TParent extends AbstractTable<any> = any> extends AbstractColumn<T, TNullable, TAutoIncrement, TParent> {
52
54
  constructor(parent: TParent, columnName: string, columnType: T);
53
- defaultValue: (value: ExtractColumnType<T> | RawValue) => Column<T, true, TAutoIncrement, TParent>;
55
+ defaultValue: (value: ExtractColumnType<T> | RawSqlValue) => Column<T, true, TAutoIncrement, TParent>;
54
56
  notNull(): Column<T, TAutoIncrement extends true ? true : TNullable extends true ? false : true, TAutoIncrement, TParent>;
55
57
  primaryKey(): Column<T, TAutoIncrement extends true ? true : false, TAutoIncrement, TParent>;
56
58
  foreignKey<ITable extends AbstractTable<ITable>>(table: new (db: DB) => ITable, callback: (table: ITable) => Column<any, boolean, boolean, ITable>, onConstraint?: {
@@ -64,7 +66,7 @@ export declare class Column<T extends ColumnType, TNullable extends boolean = tr
64
66
  }
65
67
  export declare class IndexedColumn<T extends ColumnType, TNullable extends boolean = true, TAutoIncrement extends boolean = false, TParent extends AbstractTable<any> = any> extends AbstractColumn<T, TNullable, TAutoIncrement, TParent> {
66
68
  constructor(parent: TParent, columnName: string, columnType: T, nullable: TNullable);
67
- defaultValue: (value: ExtractColumnType<T> | RawValue) => IndexedColumn<T, true, TAutoIncrement, TParent>;
69
+ defaultValue: (value: ExtractColumnType<T> | RawSqlValue) => IndexedColumn<T, true, TAutoIncrement, TParent>;
68
70
  notNull(): IndexedColumn<T, TAutoIncrement extends true ? true : TNullable extends true ? false : true, TAutoIncrement, TParent>;
69
71
  primaryKey(): IndexedColumn<T, TAutoIncrement extends true ? true : false, TAutoIncrement, TParent>;
70
72
  foreignKey<ITable extends AbstractTable<ITable>>(table: new (db: DB) => ITable, callback: (table: ITable) => Column<any, boolean, boolean, ITable>, onConstraint?: {
package/columns/column.js CHANGED
@@ -1,23 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IndexedColumn = exports.Column = exports.AbstractColumn = exports.rawValue = exports.RawValue = exports.Defaults = void 0;
4
- var Defaults;
5
- (function (Defaults) {
6
- Defaults["CURRENT_TIMESTAMP"] = "CURRENT_TIMESTAMP";
7
- })(Defaults = exports.Defaults || (exports.Defaults = {}));
8
- class RawValue {
9
- constructor(value) {
3
+ exports.IndexedColumn = exports.Column = exports.AbstractColumn = exports.rawValue = exports.Defaults = void 0;
4
+ class RawSqlValue {
5
+ constructor(value, escape) {
10
6
  this.value = value;
7
+ this.escape = escape;
8
+ }
9
+ toJSON() {
10
+ return this.escape ? `'${this.value}'` : this.value;
11
11
  }
12
12
  }
13
- exports.RawValue = RawValue;
14
- const rawValue = (value) => new RawValue(value);
13
+ exports.Defaults = {
14
+ CURRENT_TIMESTAMP: new RawSqlValue('CURRENT_TIMESTAMP', false),
15
+ };
16
+ const rawValue = (value) => new RawSqlValue(value, false);
15
17
  exports.rawValue = rawValue;
16
18
  // eslint-disable-next-line max-len
17
19
  class AbstractColumn {
18
20
  constructor(parent, columnName, columnType) {
19
21
  this.isNullableFlag = true;
20
- this.defaultParam = null;
21
22
  this.getOnDelete = () => this.onDelete;
22
23
  this.getOnUpdate = () => this.onUpdate;
23
24
  this.getAlias = () => `${this.parentTableName.replace('.', '_')}_${this.columnName}`;
@@ -37,17 +38,14 @@ class AbstractColumn {
37
38
  this.parent = parent;
38
39
  }
39
40
  defaultValue(value) {
40
- if (value instanceof RawValue) {
41
- this.defaultParam = value.value;
42
- }
43
- else if (Defaults[value] !== undefined) {
41
+ if (value instanceof RawSqlValue) {
44
42
  this.defaultParam = value;
45
43
  }
46
44
  else if (typeof value === 'boolean' || typeof value === 'number' || typeof value === 'bigint') {
47
- this.defaultParam = value;
45
+ this.defaultParam = new RawSqlValue(value, false);
48
46
  }
49
47
  else {
50
- this.defaultParam = `'${value}'`;
48
+ this.defaultParam = new RawSqlValue(`${value}`, true);
51
49
  }
52
50
  return this;
53
51
  }
package/index.d.ts CHANGED
@@ -5,6 +5,8 @@ export * from './db';
5
5
  export * from './builders';
6
6
  export * from './columns';
7
7
  export * from './tables';
8
+ export * from './logger/consoleLogger';
9
+ export * from './logger/abstractLogger';
8
10
  export declare const drizzle: {
9
11
  connect(config: ClientConfig): Promise<DB>;
10
12
  migrator(db: DB): Migrator;
package/index.js CHANGED
@@ -20,6 +20,8 @@ __exportStar(require("./db"), exports);
20
20
  __exportStar(require("./builders"), exports);
21
21
  __exportStar(require("./columns"), exports);
22
22
  __exportStar(require("./tables"), exports);
23
+ __exportStar(require("./logger/consoleLogger"), exports);
24
+ __exportStar(require("./logger/abstractLogger"), exports);
23
25
  exports.drizzle = {
24
26
  async connect(config) {
25
27
  const dbConnector = new db_1.DbConnector().params(config);
@@ -22,6 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
+ /* eslint-disable no-continue */
25
26
  /* eslint-disable no-restricted-syntax */
26
27
  /* eslint-disable import/export */
27
28
  /* eslint-disable max-classes-per-file */
@@ -72,6 +73,9 @@ class Migrator {
72
73
  await transaction.begin();
73
74
  try {
74
75
  for await (const migrationFolder of files) {
76
+ if (migrationFolder === '.DS_Store') {
77
+ continue;
78
+ }
75
79
  const migrationFiles = fs.readdirSync(`${migrationFolderTo}/${migrationFolder}`);
76
80
  const migrationFile = migrationFiles.filter((file) => file === 'migration.sql')[0];
77
81
  const query = fs.readFileSync(`${migrationFolderTo}/${migrationFolder}/${migrationFile}`).toString();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drizzle-orm",
3
- "version": "0.10.38",
3
+ "version": "0.10.41",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,9 +10,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  const columns_1 = require("../columns");
12
12
  const tableIndex_1 = __importDefault(require("../indexes/tableIndex"));
13
- const serialiseForeignKey = (fkName, table, column, onDelete, onUpdate) => {
14
- return `${fkName};${table};${column};${onDelete !== null && onDelete !== void 0 ? onDelete : ''};${onUpdate !== null && onUpdate !== void 0 ? onUpdate : ''}`;
15
- };
13
+ // eslint-disable-next-line max-len
14
+ const serialiseForeignKey = (fkName, table, column, onDelete, onUpdate) => `${fkName};${table};${column};${onDelete !== null && onDelete !== void 0 ? onDelete : ''};${onUpdate !== null && onUpdate !== void 0 ? onUpdate : ''}`;
16
15
  class MigrationSerializer {
17
16
  constructor() {
18
17
  this.generate = (tables, enums) => {
@@ -49,7 +48,7 @@ class MigrationSerializer {
49
48
  notNull: !value.isNullableFlag,
50
49
  };
51
50
  if (value.getDefaultValue() !== undefined && value.getDefaultValue() !== null) {
52
- columnToReturn[value.getColumnName()].default = value.getDefaultValue();
51
+ columnToReturn[value.getColumnName()].default = value.getDefaultValue().toJSON();
53
52
  }
54
53
  if (value.uniqueKeyName) {
55
54
  const indexName = `${value.getParent().tableName()}_${value.getColumnName()}_index`;
@@ -66,11 +65,12 @@ class MigrationSerializer {
66
65
  const referenced = value.getReferenced();
67
66
  if (referenced) {
68
67
  const fkName = `${value.getParent().tableName()}_${value.getColumnName()}_fkey`;
69
- const table = referenced.getParentName();
68
+ const tableParentName = referenced.getParentName();
70
69
  const column = referenced.getColumnName();
71
70
  const onDelete = value.getOnDelete();
72
71
  const onUpdate = value.getOnUpdate();
73
- const referenceString = serialiseForeignKey(fkName, table, column, onDelete, onUpdate);
72
+ // eslint-disable-next-line max-len
73
+ const referenceString = serialiseForeignKey(fkName, tableParentName, column, onDelete, onUpdate);
74
74
  columnToReturn[value.getColumnName()].references = referenceString;
75
75
  }
76
76
  }
@@ -162,6 +162,7 @@ class MigrationSerializer {
162
162
  const foreignKeyName = fk.constraint_name;
163
163
  const onUpdate = fk.update_rule;
164
164
  const onDelete = fk.delete_rule;
165
+ // eslint-disable-next-line max-len
165
166
  const references = serialiseForeignKey(foreignKeyName, tableTo, columnTo, onDelete, onUpdate);
166
167
  mappedRefernces[columnFrom] = references;
167
168
  }
package/test.d.ts CHANGED
@@ -0,0 +1 @@
1
+ export {};
package/test.js CHANGED
@@ -1,60 +1,67 @@
1
1
  "use strict";
2
- // import { eq } from './builders/requestBuilders/where/static';
3
- // import DbConnector from './db/dbConnector';
4
- // import CitiesTable from './docs/tables/citiesTable';
5
- // import UsersTable from './docs/tables/usersTable';
6
- // import ConsoleLogger from './logger/consoleLogger';
7
- // import MigrationSerializer from './serializer/serializer';
8
- // import AbstractTable from './tables/abstractTable';
9
- // (async () => {
10
- // try {
11
- // const db = await new DbConnector()
12
- // .connectionString('postgresql://postgres@127.0.0.1/migrator')
13
- // .connect();
14
- // db.useLogger(new ConsoleLogger());
15
- // const usersTable = new UsersTable(db);
16
- // // const citiesTable = new CitiesTable(db);
17
- // // const res = await citiesTable.update()
18
- // // // .groupBy((table, join1, join2, join3) => [table.id, join1.id, join1.phone])
19
- // // .where(eq(citiesTable.location, 'YR'))
20
- // // .set({
21
- // // metadata: [{
22
- // // fallback_image: true,
23
- // // team_image: 'https://files.slack.com/files-pri/T016CCC3FE3-F03461UR9M5/clinic_team_photo_1.jpg?pub_secret=560c098bfb',
24
- // // image_alt_text: 'Generic Physiotherapy Clinic image 1',
25
- // // logo: '',
26
- // // logo_alt_text: ''
27
- // // }],
28
- // // })
29
- // // // .leftJoin(CitiesTable, UsersTable, (table) => table.userId, (table) => table.id)
30
- // // // .leftJoin(UsersTable, UsersTable, (table) => table.id, (table) => table.id)
31
- // // .execute();
32
- // // console.log(res);
33
- // const ser = new MigrationSerializer();
34
- // const res = ser.generate([usersTable as AbstractTable<UsersTable>], []);
35
- // console.log(JSON.stringify(res, null, 2));
36
- // // const f = {
37
- // // id: count(usersTable.id),
38
- // // };
39
- // // type d = ExtractModel<typeof f>;
40
- // // const res = await usersTable.select()
41
- // // .leftJoin(UsersTable, (table) => table.id, (table) => table.id)
42
- // // .leftJoin(UsersTable, CitiesTable, (table) => table.id, (table) => table.id)
43
- // // .execute();
44
- // // const res = await usersTable.select()
45
- // // // .groupBy((table, join1, join2, join3) => [table.id, join1.id, join1.phone])
46
- // // .leftJoin(UsersTable, (table) => table.foundationDate, (table) => table.id)
47
- // // .leftJoin(UsersTable, UsersTable, (table) => table.role, (table) => table.id)
48
- // // .leftJoin(UsersTable, UsersTable, (table) => table.role, (table) => table.id)
49
- // // // .groupBy({
50
- // // // usersTable: usersTable.id,
51
- // // // firstJoin: [usersTable.id],
52
- // // // secondJoin: usersTable.id,
53
- // // // thirdJoin: usersTable.id,
54
- // // // })
55
- // // .execute();
56
- // // console.log(res);
57
- // } catch (e) {
58
- // console.log(e);
59
- // }
60
- // })();
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 _1 = require(".");
7
+ const dbConnector_1 = __importDefault(require("./db/dbConnector"));
8
+ const consoleLogger_1 = __importDefault(require("./logger/consoleLogger"));
9
+ (async () => {
10
+ try {
11
+ const db = await new dbConnector_1.default()
12
+ .connectionString('postgresql://postgres@127.0.0.1/migrator')
13
+ .connect();
14
+ db.useLogger(new consoleLogger_1.default());
15
+ // const usersTable = new UsersTable(db);
16
+ _1.drizzle.migrator(db).migrate({ migrationFolder: 'drizzle' });
17
+ // type g = ReturnType<typeof usersTable.updatedAt.getColumnType>['codeType'];
18
+ // type f = ExtractColumnType<typeof usersTable.updatedAt>;
19
+ // type f1 = ExtractColumnType1<f>;
20
+ // const citiesTable = new CitiesTable(db);
21
+ // await usersTable.insert({
22
+ // });
23
+ // const res = await citiesTable.update()
24
+ // // .groupBy((table, join1, join2, join3) => [table.id, join1.id, join1.phone])
25
+ // .where(eq(citiesTable.location, 'YR'))
26
+ // .set({
27
+ // metadata: [{
28
+ // fallback_image: true,
29
+ // team_image: 'https://files.slack.com/files-pri/T016CCC3FE3-F03461UR9M5/clinic_team_photo_1.jpg?pub_secret=560c098bfb',
30
+ // image_alt_text: 'Generic Physiotherapy Clinic image 1',
31
+ // logo: '',
32
+ // logo_alt_text: ''
33
+ // }],
34
+ // })
35
+ // // .leftJoin(CitiesTable, UsersTable, (table) => table.userId, (table) => table.id)
36
+ // // .leftJoin(UsersTable, UsersTable, (table) => table.id, (table) => table.id)
37
+ // .execute();
38
+ // console.log(res);
39
+ // const ser = new MigrationSerializer();
40
+ // const res = ser.generate([usersTable as AbstractTable<UsersTable>], []);
41
+ // console.log(JSON.stringify(res, null, 2));
42
+ // const f = {
43
+ // id: count(usersTable.id),
44
+ // };
45
+ // type d = ExtractModel<typeof f>;
46
+ // const res = await usersTable.select()
47
+ // .leftJoin(UsersTable, (table) => table.id, (table) => table.id)
48
+ // .leftJoin(UsersTable, CitiesTable, (table) => table.id, (table) => table.id)
49
+ // .execute();
50
+ // const res = await usersTable.select()
51
+ // // .groupBy((table, join1, join2, join3) => [table.id, join1.id, join1.phone])
52
+ // .leftJoin(UsersTable, (table) => table.foundationDate, (table) => table.id)
53
+ // .leftJoin(UsersTable, UsersTable, (table) => table.role, (table) => table.id)
54
+ // .leftJoin(UsersTable, UsersTable, (table) => table.role, (table) => table.id)
55
+ // // .groupBy({
56
+ // // usersTable: usersTable.id,
57
+ // // firstJoin: [usersTable.id],
58
+ // // secondJoin: usersTable.id,
59
+ // // thirdJoin: usersTable.id,
60
+ // // })
61
+ // .execute();
62
+ // console.log(res);
63
+ }
64
+ catch (e) {
65
+ console.log(e);
66
+ }
67
+ })();