@loopback/sequelize 0.3.0 → 0.5.0

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 (63) hide show
  1. package/README.md +28 -2
  2. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/book-category.controller.js +2 -3
  3. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/book.controller.js +2 -3
  4. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/category.controller.js +2 -3
  5. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/developer.controller.js +2 -3
  6. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/doctor-patient.controller.js +2 -3
  7. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/doctor.controller.js +2 -3
  8. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/index.js +1 -0
  9. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/patient.controller.js +2 -3
  10. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/product.controller.js +2 -3
  11. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/programming-languange.controller.js +2 -3
  12. package/dist/.sandbox/40627f10KYa/controllers/task.controller.js +209 -0
  13. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/todo-list-todo.controller.js +2 -3
  14. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/todo-list.controller.js +3 -4
  15. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/todo-todo-list.controller.js +2 -3
  16. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/todo.controller.js +2 -3
  17. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/transaction.controller.js +2 -3
  18. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/user-todo-list.controller.js +2 -3
  19. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/user.controller.js +2 -3
  20. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/datasources/config.js +22 -0
  21. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/datasources/primary.datasource.js +2 -3
  22. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/datasources/secondary.datasource.js +2 -3
  23. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/appointment.model.js +2 -3
  24. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/book.model.js +2 -3
  25. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/category.model.js +2 -3
  26. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/developer.model.js +9 -3
  27. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/doctor.model.js +2 -3
  28. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/index.js +1 -0
  29. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/patient.model.js +2 -3
  30. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/product.model.js +2 -3
  31. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/programming-language.model.js +9 -3
  32. package/dist/.sandbox/40627f10KYa/models/task.model.js +73 -0
  33. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/todo-list.model.js +2 -3
  34. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/todo.model.js +2 -3
  35. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/models/user.model.js +11 -6
  36. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/appointment.repository.js +2 -3
  37. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/book.repository.js +2 -3
  38. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/category.repository.js +2 -3
  39. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/developer.repository.js +2 -3
  40. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/doctor.repository.js +2 -3
  41. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/index.js +1 -0
  42. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/patient.repository.js +2 -3
  43. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/product.repository.js +2 -3
  44. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/programming-language.repository.js +2 -3
  45. package/dist/.sandbox/40627f10KYa/repositories/task.repository.js +25 -0
  46. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/todo-list.repository.js +2 -3
  47. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/todo.repository.js +2 -3
  48. package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/repositories/user.repository.js +2 -3
  49. package/dist/component.js +2 -3
  50. package/dist/component.js.map +1 -1
  51. package/dist/keys.js +1 -1
  52. package/dist/keys.js.map +1 -1
  53. package/dist/sequelize/sequelize.datasource.base.d.ts +54 -3
  54. package/dist/sequelize/sequelize.datasource.base.js +75 -2
  55. package/dist/sequelize/sequelize.datasource.base.js.map +1 -1
  56. package/dist/sequelize/sequelize.repository.base.d.ts +70 -3
  57. package/dist/sequelize/sequelize.repository.base.js +132 -37
  58. package/dist/sequelize/sequelize.repository.base.js.map +1 -1
  59. package/package.json +14 -14
  60. package/src/sequelize/sequelize.datasource.base.ts +121 -4
  61. package/src/sequelize/sequelize.repository.base.ts +178 -64
  62. /package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/application.js +0 -0
  63. /package/dist/.sandbox/{61612HwhooZ → 40627f10KYa}/controllers/test.controller.base.js +0 -0
@@ -8,6 +8,7 @@ exports.SequelizeCrudRepository = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  const repository_1 = require("@loopback/repository");
10
10
  const debug_1 = tslib_1.__importDefault(require("debug"));
11
+ const nanoid_1 = require("nanoid");
11
12
  const sequelize_1 = require("sequelize");
12
13
  const operator_translation_1 = require("./operator-translation");
13
14
  const utils_1 = require("./utils");
@@ -44,22 +45,34 @@ class SequelizeCrudRepository {
44
45
  'mysql',
45
46
  'sqlite3',
46
47
  ];
48
+ /**
49
+ * Length of the `nanoid` generated for defaultFn's `shortid` and `nanoid` aliases.
50
+ */
51
+ this.NANO_ID_LENGTH = 9;
52
+ /**
53
+ * The alias registry for `defaultFn` option used in model property definition.
54
+ *
55
+ * See: https://loopback.io/doc/en/lb4/Model.html#property-decorator
56
+ */
57
+ this.defaultFnRegistry = {
58
+ guid: sequelize_1.DataTypes.UUIDV1,
59
+ uuid: sequelize_1.DataTypes.UUIDV1,
60
+ uuidv4: sequelize_1.DataTypes.UUIDV4,
61
+ now: sequelize_1.DataTypes.NOW,
62
+ shortid: () => (0, nanoid_1.nanoid)(this.NANO_ID_LENGTH),
63
+ nanoid: () => (0, nanoid_1.nanoid)(this.NANO_ID_LENGTH),
64
+ };
47
65
  this.inclusionResolvers = new Map();
48
66
  if (this.dataSource.sequelize) {
49
67
  this.sequelizeModel = this.getSequelizeModel();
50
68
  }
51
69
  }
70
+ getDefaultFnRegistry() {
71
+ return this.defaultFnRegistry;
72
+ }
52
73
  async create(entity, options) {
53
- let err = null;
54
- const data = await this.sequelizeModel
55
- .create(entity, options)
56
- .catch(error => {
57
- err = error;
58
- });
59
- if (!data) {
60
- throw new Error(err !== null && err !== void 0 ? err : 'Something went wrong');
61
- }
62
- return new this.entityClass(this.excludeHiddenProps(data.toJSON()));
74
+ const data = await this.sequelizeModel.create(entity, options);
75
+ return new this.entityClass(data.toJSON());
63
76
  }
64
77
  async createAll(entities, options) {
65
78
  const models = await this.sequelizeModel.bulkCreate(entities, options);
@@ -114,8 +127,7 @@ class SequelizeCrudRepository {
114
127
  }
115
128
  async find(filter, options) {
116
129
  var _a;
117
- const data = await this.sequelizeModel
118
- .findAll({
130
+ const data = await this.sequelizeModel.findAll({
119
131
  include: this.buildSequelizeIncludeFilter(filter === null || filter === void 0 ? void 0 : filter.include),
120
132
  where: this.buildSequelizeWhere(filter === null || filter === void 0 ? void 0 : filter.where),
121
133
  attributes: this.buildSequelizeAttributeFilter(filter === null || filter === void 0 ? void 0 : filter.fields),
@@ -123,27 +135,18 @@ class SequelizeCrudRepository {
123
135
  limit: filter === null || filter === void 0 ? void 0 : filter.limit,
124
136
  offset: (_a = filter === null || filter === void 0 ? void 0 : filter.offset) !== null && _a !== void 0 ? _a : filter === null || filter === void 0 ? void 0 : filter.skip,
125
137
  ...options,
126
- })
127
- .catch(err => {
128
- debug('findAll() error:', err);
129
- throw new Error(err);
130
138
  });
131
139
  return this.includeReferencesIfRequested(data, this.entityClass, filter === null || filter === void 0 ? void 0 : filter.include);
132
140
  }
133
141
  async findOne(filter, options) {
134
142
  var _a;
135
- const data = await this.sequelizeModel
136
- .findOne({
143
+ const data = await this.sequelizeModel.findOne({
137
144
  include: this.buildSequelizeIncludeFilter(filter === null || filter === void 0 ? void 0 : filter.include),
138
145
  where: this.buildSequelizeWhere(filter === null || filter === void 0 ? void 0 : filter.where),
139
146
  attributes: this.buildSequelizeAttributeFilter(filter === null || filter === void 0 ? void 0 : filter.fields),
140
147
  order: this.buildSequelizeOrder(filter === null || filter === void 0 ? void 0 : filter.order),
141
148
  offset: (_a = filter === null || filter === void 0 ? void 0 : filter.offset) !== null && _a !== void 0 ? _a : filter === null || filter === void 0 ? void 0 : filter.skip,
142
149
  ...options,
143
- })
144
- .catch(err => {
145
- debug('findOne() error:', err);
146
- throw new Error(err);
147
150
  });
148
151
  if (data === null) {
149
152
  return Promise.resolve(null);
@@ -203,8 +206,37 @@ class SequelizeCrudRepository {
203
206
  });
204
207
  return { count };
205
208
  }
206
- async execute(..._args) {
207
- throw new Error('RAW Query execution is currently NOT supported for Sequelize CRUD Repository.');
209
+ /**
210
+ * Execute a SQL command.
211
+ *
212
+ * **WARNING:** In general, it is always better to perform database actions
213
+ * through repository methods. Directly executing SQL may lead to unexpected
214
+ * results, corrupted data, security vulnerabilities and other issues.
215
+ *
216
+ * @example
217
+ *
218
+ * ```ts
219
+ * // MySQL
220
+ * const result = await repo.execute(
221
+ * 'SELECT * FROM Products WHERE size > ?',
222
+ * [42]
223
+ * );
224
+ *
225
+ * // PostgreSQL
226
+ * const result = await repo.execute(
227
+ * 'SELECT * FROM Products WHERE size > $1',
228
+ * [42]
229
+ * );
230
+ * ```
231
+ *
232
+ * @param command A parameterized SQL command or query.
233
+ * @param parameters List of parameter values to use.
234
+ * @param options Additional options, for example `transaction`.
235
+ * @returns A promise which resolves to the command output. The output type (data structure) is database specific and
236
+ * often depends on the command executed.
237
+ */
238
+ async execute(command, parameters, options) {
239
+ return this.dataSource.execute(command, parameters, options);
208
240
  }
209
241
  toEntities(models) {
210
242
  return models.map(m => new this.entityClass(m.toJSON()));
@@ -280,6 +312,20 @@ class SequelizeCrudRepository {
280
312
  return [columnName, orderType !== null && orderType !== void 0 ? orderType : this.DEFAULT_ORDER_STYLE];
281
313
  });
282
314
  }
315
+ /**
316
+ * Checks if the resolver of the inclusion relation is registered
317
+ * in the inclusionResolver of the current repository
318
+ *
319
+ * @param include - LoopBack Inclusion filter
320
+ */
321
+ isInclusionAllowed(include) {
322
+ const relationName = typeof include === 'string' ? include : include.relation;
323
+ if (!relationName) {
324
+ return false;
325
+ }
326
+ const allowed = this.inclusionResolvers.has(relationName);
327
+ return allowed;
328
+ }
283
329
  /**
284
330
  * Build Sequelize compatible `include` filter
285
331
  * @param inclusionFilters - loopback style `where` condition
@@ -294,6 +340,21 @@ class SequelizeCrudRepository {
294
340
  if (!sourceModel) {
295
341
  sourceModel = this.sequelizeModel;
296
342
  }
343
+ if (sourceModel === this.sequelizeModel) {
344
+ const invalidInclusions = inclusionFilters.filter(inclusionFilter => !this.isInclusionAllowed(inclusionFilter));
345
+ if (invalidInclusions.length) {
346
+ const msg = 'Invalid "filter.include" entries: ' +
347
+ invalidInclusions
348
+ .map(inclusionFilter => JSON.stringify(inclusionFilter))
349
+ .join('; ');
350
+ const err = new Error(msg);
351
+ Object.assign(err, {
352
+ code: 'INVALID_INCLUSION_FILTER',
353
+ statusCode: 400,
354
+ });
355
+ throw err;
356
+ }
357
+ }
297
358
  const includable = [];
298
359
  for (const filter of inclusionFilters) {
299
360
  if (typeof filter === 'string') {
@@ -402,7 +463,7 @@ class SequelizeCrudRepository {
402
463
  // TODO: Make it more flexible, check support of all possible definition props
403
464
  const sourceModel = this.dataSource.sequelize.define(entityClass.modelName, this.getSequelizeModelAttributes(entityClass.definition.properties), {
404
465
  timestamps: false,
405
- tableName: entityClass.modelName.toLowerCase(),
466
+ tableName: this.getTableName(entityClass),
406
467
  freezeTableName: true,
407
468
  });
408
469
  // Setup associations
@@ -454,6 +515,30 @@ class SequelizeCrudRepository {
454
515
  debugModelBuilder('Table name supplied to sequelize'.concat(`"${entityClass.modelName.toLowerCase()}"`));
455
516
  return sourceModel;
456
517
  }
518
+ /**
519
+ * This function retrieves the table name associated with a given entity class.
520
+ * Different loopback connectors have different conventions for picking up table names,
521
+ * unless the name is specified in the @model decorator.
522
+ *
523
+ * The function follows the following cases to determine the table name:
524
+ * - It checks if the name property is specified in the @model decorator and uses it. (this takes precedence over all other cases)
525
+ * - If the dialect of the dataSource is PostgreSQL, it uses the lowercased version of the model class name.
526
+ * - If the dialect is MySQL or any other dialect, it uses the default model class name.
527
+ * @param {Entity} entityClass - The entity class for which the table name is being retrieved.
528
+ * @returns {string} - The table name associated with the entity class. Which is used when performing the query.
529
+ */
530
+ getTableName(entityClass = this.entityClass) {
531
+ let tableName = entityClass.name; // model class name
532
+ if (entityClass.definition.name !== tableName) {
533
+ // name is specified in decorator
534
+ tableName = entityClass.definition.name;
535
+ }
536
+ else if (this.dataSource.sequelizeConfig.dialect === 'postgres') {
537
+ // postgres is being used and name is not specified in @model decorator
538
+ tableName = entityClass.modelName.toLowerCase();
539
+ }
540
+ return tableName;
541
+ }
457
542
  /**
458
543
  * Run CREATE TABLE query for the target sequelize model, Useful for quick testing
459
544
  * @param options Sequelize Sync Options
@@ -525,11 +610,17 @@ class SequelizeCrudRepository {
525
610
  if (dataType === sequelize_1.DataTypes.STRING && !isString) {
526
611
  throw Error(`Unhandled DataType "${definition[propName].type.toString()}" for column "${propName}" in sequelize extension`);
527
612
  }
613
+ let defaultValue = definition[propName].default;
614
+ const originalDefaultFn = definition[propName]['defaultFn'];
615
+ if (typeof originalDefaultFn === 'function') {
616
+ defaultValue = originalDefaultFn;
617
+ }
618
+ else if (originalDefaultFn in this.getDefaultFnRegistry()) {
619
+ defaultValue = this.getDefaultFnRegistry()[originalDefaultFn];
620
+ }
528
621
  const columnOptions = {
529
622
  type: dataType,
530
- ...('default' in definition[propName]
531
- ? { defaultValue: definition[propName].default }
532
- : {}),
623
+ defaultValue,
533
624
  };
534
625
  // Set column as `primaryKey` when id is set to true (which is loopback way to define primary key)
535
626
  if (definition[propName].id === true) {
@@ -556,6 +647,11 @@ class SequelizeCrudRepository {
556
647
  * Remove hidden properties specified in model from response body. (See: https://github.com/sourcefuse/loopback4-sequelize/issues/3)
557
648
  * @param entity normalized entity. You can use `entity.toJSON()`'s value
558
649
  * @returns normalized entity excluding the hiddenProperties
650
+ *
651
+ * @deprecated To exclude hidden props from an entity instance, call the `.toJSON()` method on it.
652
+ * Alternatively it can be use by manually instantiating the model using `new EntityClass(data).toJSON()`.
653
+ *
654
+ * This function will be removed in next major release.
559
655
  */
560
656
  excludeHiddenProps(entity) {
561
657
  const hiddenProps = this.entityClass.definition.settings.hiddenProperties;
@@ -583,6 +679,7 @@ class SequelizeCrudRepository {
583
679
  if (!parentEntityClass) {
584
680
  parentEntityClass = this.entityClass;
585
681
  }
682
+ let parentEntityInstances = parentEntities.map(sequelizeModel => new this.entityClass(sequelizeModel.toJSON()));
586
683
  /**
587
684
  * All columns names defined in model with `@referencesMany`
588
685
  */
@@ -598,8 +695,8 @@ class SequelizeCrudRepository {
598
695
  }
599
696
  // Validate data type of items in any column having references
600
697
  // For eg. convert ["1", "2"] into [1, 2] if `itemType` specified is `number[]`
601
- const normalizedParentEntities = parentEntities.map(entity => {
602
- const data = entity.toJSON();
698
+ parentEntityInstances = parentEntityInstances.map(entity => {
699
+ const data = entity;
603
700
  for (const columnName in data) {
604
701
  if (!allReferencesColumns.includes(columnName)) {
605
702
  // Column is not the one used for referencesMany relation. Eg. "programmingLanguageIds"
@@ -640,11 +737,10 @@ class SequelizeCrudRepository {
640
737
  }
641
738
  }
642
739
  if (referencesManyInclusions.length === 0) {
643
- const entityClasses = normalizedParentEntities.map(e => new parentEntityClass(e));
644
- return entityClasses;
740
+ return parentEntityInstances;
645
741
  }
646
742
  for (const relation of referencesManyInclusions) {
647
- normalizedParentEntities.forEach(entity => {
743
+ parentEntityInstances.forEach(entity => {
648
744
  if (!relation.definition.keyFrom) {
649
745
  return;
650
746
  }
@@ -703,7 +799,7 @@ class SequelizeCrudRepository {
703
799
  offset: (_k = (_j = relation.filter.scope) === null || _j === void 0 ? void 0 : _j.offset) !== null && _k !== void 0 ? _k : (_l = relation.filter.scope) === null || _l === void 0 ? void 0 : _l.skip,
704
800
  });
705
801
  const childModelData = await this.includeReferencesIfRequested(sequelizeData, targetLoopbackModel, (_m = relation.filter.scope) === null || _m === void 0 ? void 0 : _m.include);
706
- normalizedParentEntities.forEach(entity => {
802
+ parentEntityInstances.forEach(entity => {
707
803
  const foreignKeys = entity[relation.definition.keyFrom];
708
804
  const filteredChildModels = childModelData.filter(childModel => {
709
805
  if (Array.isArray(foreignKeys)) {
@@ -719,13 +815,12 @@ class SequelizeCrudRepository {
719
815
  if (includeForeignKeyInResponse === false) {
720
816
  delete safeCopy[foreignKey];
721
817
  }
722
- return safeCopy;
818
+ return new targetLoopbackModel(safeCopy);
723
819
  }),
724
820
  });
725
- return new parentEntityClass(entity);
726
821
  });
727
822
  }
728
- return normalizedParentEntities;
823
+ return parentEntityInstances;
729
824
  }
730
825
  /**
731
826
  * Register an inclusion resolver for the related model name.
@@ -1 +1 @@
1
- {"version":3,"file":"sequelize.repository.base.js","sourceRoot":"","sources":["../../src/sequelize/sequelize.repository.base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sequelize.repository.base.js","sourceRoot":"","sources":["../../src/sequelize/sequelize.repository.base.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loopback/sequelize",
3
3
  "description": "Loopback 4 Extension That Provides Sequelize Crud Repository Compatible With Default Loopback Models.",
4
- "version": "0.3.0",
4
+ "version": "0.5.0",
5
5
  "keywords": [
6
6
  "loopback-extension",
7
7
  "loopback",
@@ -44,21 +44,21 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "debug": "^4.3.4",
47
- "sequelize": "^6.31.1",
48
- "tslib": "^2.5.0"
47
+ "sequelize": "^6.32.1",
48
+ "tslib": "^2.6.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@loopback/boot": "^6.0.0",
52
- "@loopback/build": "^10.0.0",
53
- "@loopback/core": "^5.0.0",
54
- "@loopback/repository": "^6.0.0",
55
- "@loopback/rest": "^13.0.0",
56
- "@loopback/testlab": "^6.0.0",
57
- "@types/node": "^14.18.47",
58
- "pg": "^8.10.0",
51
+ "@loopback/boot": "^6.1.1",
52
+ "@loopback/build": "^10.1.1",
53
+ "@loopback/core": "^5.1.1",
54
+ "@loopback/repository": "^6.1.1",
55
+ "@loopback/rest": "^13.1.1",
56
+ "@loopback/testlab": "^6.1.1",
57
+ "@types/node": "^16.18.38",
58
+ "pg": "^8.11.1",
59
59
  "pg-hstore": "^2.3.4",
60
- "sqlite3": "^5.1.4",
61
- "typescript": "~4.9.5"
60
+ "sqlite3": "5.1.4",
61
+ "typescript": "~5.1.6"
62
62
  },
63
- "gitHead": "97a26bd5973830a1d5f28aa2f58040f953995c17"
63
+ "gitHead": "be0c53e30bbe9edf7753c4fcd7ab3199f7cd3b8c"
64
64
  }
@@ -1,8 +1,15 @@
1
1
  import {LifeCycleObserver} from '@loopback/core';
2
- import {AnyObject} from '@loopback/repository';
2
+ import {
3
+ AnyObject,
4
+ Command,
5
+ NamedParameters,
6
+ Options,
7
+ PositionalParameters,
8
+ } from '@loopback/repository';
3
9
  import debugFactory from 'debug';
4
10
  import {
5
11
  PoolOptions,
12
+ QueryOptions,
6
13
  Sequelize,
7
14
  Options as SequelizeOptions,
8
15
  Transaction,
@@ -41,7 +48,7 @@ export class SequelizeDataSource implements LifeCycleObserver {
41
48
  }
42
49
 
43
50
  sequelize?: Sequelize;
44
- sequelizeConfig: SequelizeDataSourceConfig;
51
+ sequelizeConfig: SequelizeOptions;
45
52
  async init(): Promise<void> {
46
53
  const {config} = this;
47
54
  const {
@@ -54,6 +61,7 @@ export class SequelizeDataSource implements LifeCycleObserver {
54
61
  user,
55
62
  username,
56
63
  password,
64
+ tns,
57
65
  } = config;
58
66
 
59
67
  this.sequelizeConfig = {
@@ -67,9 +75,17 @@ export class SequelizeDataSource implements LifeCycleObserver {
67
75
  password,
68
76
  logging: queryLogging,
69
77
  pool: this.getPoolOptions(),
78
+ dialectOptions: {
79
+ connectString: tns, // oracle connect string
80
+ },
81
+ ...config.sequelizeOptions,
70
82
  };
71
83
 
72
- this.sequelize = new Sequelize(this.sequelizeConfig);
84
+ if (config.url) {
85
+ this.sequelize = new Sequelize(config.url, this.sequelizeConfig);
86
+ } else {
87
+ this.sequelize = new Sequelize(this.sequelizeConfig);
88
+ }
73
89
 
74
90
  await this.sequelize.authenticate();
75
91
  debug('Connection has been established successfully.');
@@ -121,6 +137,86 @@ export class SequelizeDataSource implements LifeCycleObserver {
121
137
 
122
138
  return this.sequelize!.transaction(options);
123
139
  }
140
+
141
+ /**
142
+ * Execute a SQL command.
143
+ *
144
+ * **WARNING:** In general, it is always better to perform database actions
145
+ * through repository methods. Directly executing SQL may lead to unexpected
146
+ * results, corrupted data, security vulnerabilities and other issues.
147
+ *
148
+ * @example
149
+ *
150
+ * ```ts
151
+ * // MySQL
152
+ * const result = await db.execute(
153
+ * 'SELECT * FROM Products WHERE size > ?',
154
+ * [42]
155
+ * );
156
+ *
157
+ * // PostgreSQL
158
+ * const result = await db.execute(
159
+ * 'SELECT * FROM Products WHERE size > $1',
160
+ * [42]
161
+ * );
162
+ * ```
163
+ *
164
+ * @param command A parameterized SQL command or query.
165
+ * @param parameters List of parameter values to use.
166
+ * @param options Additional options, for example `transaction`.
167
+ * @returns A promise which resolves to the command output. The output type (data structure) is database specific and
168
+ * often depends on the command executed.
169
+ */
170
+ async execute(
171
+ command: Command,
172
+ parameters?: NamedParameters | PositionalParameters,
173
+ options?: Options,
174
+ ): Promise<AnyObject> {
175
+ if (!this.sequelize) {
176
+ throw Error(
177
+ `The datasource "${this.name}" doesn't have sequelize instance bound to it.`,
178
+ );
179
+ }
180
+
181
+ if (typeof command !== 'string') {
182
+ command = JSON.stringify(command);
183
+ }
184
+
185
+ options = options ?? {};
186
+
187
+ const queryOptions: QueryOptions = {};
188
+ if (options?.transaction) {
189
+ queryOptions.transaction = options.transaction;
190
+ }
191
+
192
+ let targetReplacementKey: 'replacements' | 'bind';
193
+
194
+ // By default, we'll use 'bind'
195
+ targetReplacementKey = 'bind';
196
+
197
+ if (command.includes('?')) {
198
+ // If command has '?', use 'replacements'
199
+ targetReplacementKey = 'replacements';
200
+ } else if (/\$\w/g.test(command)) {
201
+ // If command has parameters starting with a dollar sign ($param or $1, $2), use 'bind'
202
+ targetReplacementKey = 'bind';
203
+ }
204
+
205
+ if (parameters) {
206
+ queryOptions[targetReplacementKey] = parameters;
207
+ }
208
+ const result = await this.sequelize.query(command, queryOptions);
209
+
210
+ // Sequelize returns the select query result in an array at index 0 and at index 1 is the actual Result instance
211
+ // Whereas in juggler it is returned directly as plain array.
212
+ // Below condition maps that 0th index to final result to match juggler's behaviour
213
+ if (command.match(/^select/i) && result.length >= 1) {
214
+ return result[0];
215
+ }
216
+
217
+ return result;
218
+ }
219
+
124
220
  getPoolOptions(): PoolOptions | undefined {
125
221
  const config: SequelizeDataSourceConfig = this.config;
126
222
  const specifiedPoolOptions = Object.keys(config).some(key =>
@@ -158,9 +254,30 @@ export class SequelizeDataSource implements LifeCycleObserver {
158
254
  }
159
255
  }
160
256
 
161
- export type SequelizeDataSourceConfig = SequelizeOptions & {
257
+ export type SequelizeDataSourceConfig = {
162
258
  name?: string;
163
259
  user?: string;
164
260
  connector?: SupportedLoopbackConnectors;
165
261
  url?: string;
262
+ /**
263
+ * Additional sequelize options that are passed directly to
264
+ * Sequelize when initializing the connection.
265
+ * Any options provided in this way will take priority over
266
+ * other configurations that may come from parsing the loopback style configurations.
267
+ *
268
+ * eg.
269
+ * ```ts
270
+ * let config = {
271
+ * name: 'db',
272
+ * connector: 'postgresql',
273
+ * sequelizeOptions: {
274
+ * dialectOptions: {
275
+ * rejectUnauthorized: false,
276
+ * ca: fs.readFileSync('/path/to/root.crt').toString(),
277
+ * }
278
+ * }
279
+ * };
280
+ * ```
281
+ */
282
+ sequelizeOptions?: SequelizeOptions;
166
283
  } & AnyObject;