@loopback/sequelize 0.1.0 → 0.3.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 (65) hide show
  1. package/README.md +79 -3
  2. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/index.js +2 -0
  3. package/dist/.sandbox/61612HwhooZ/controllers/product.controller.js +177 -0
  4. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/test.controller.base.js +9 -7
  5. package/dist/.sandbox/61612HwhooZ/controllers/transaction.controller.js +157 -0
  6. package/dist/.sandbox/61612HwhooZ/datasources/config.js +43 -0
  7. package/dist/.sandbox/61612HwhooZ/datasources/primary.datasource.js +28 -0
  8. package/dist/.sandbox/61612HwhooZ/datasources/secondary.datasource.js +28 -0
  9. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/index.js +8 -7
  10. package/dist/.sandbox/61612HwhooZ/models/product.model.js +41 -0
  11. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/appointment.repository.js +3 -3
  12. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/book.repository.js +3 -3
  13. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/category.repository.js +3 -3
  14. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/developer.repository.js +3 -3
  15. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/doctor.repository.js +3 -3
  16. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/index.js +8 -7
  17. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/patient.repository.js +3 -3
  18. package/dist/.sandbox/61612HwhooZ/repositories/product.repository.js +20 -0
  19. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/programming-language.repository.js +3 -3
  20. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/todo-list.repository.js +3 -3
  21. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/todo.repository.js +3 -3
  22. package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/repositories/user.repository.js +3 -7
  23. package/dist/sequelize/connector-mapping.d.ts +15 -1
  24. package/dist/sequelize/connector-mapping.js +38 -1
  25. package/dist/sequelize/connector-mapping.js.map +1 -1
  26. package/dist/sequelize/sequelize.datasource.base.d.ts +13 -2
  27. package/dist/sequelize/sequelize.datasource.base.js +79 -26
  28. package/dist/sequelize/sequelize.datasource.base.js.map +1 -1
  29. package/dist/sequelize/sequelize.repository.base.d.ts +4 -3
  30. package/dist/sequelize/sequelize.repository.base.js +12 -7
  31. package/dist/sequelize/sequelize.repository.base.js.map +1 -1
  32. package/dist/types.d.ts +4 -0
  33. package/dist/types.js +6 -1
  34. package/dist/types.js.map +1 -1
  35. package/package.json +24 -24
  36. package/src/sequelize/connector-mapping.ts +53 -1
  37. package/src/sequelize/sequelize.datasource.base.ts +110 -25
  38. package/src/sequelize/sequelize.repository.base.ts +22 -8
  39. package/src/types.ts +5 -0
  40. package/dist/.sandbox/6646miobBk/datasources/db.datasource.js +0 -28
  41. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/application.js +0 -0
  42. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/book-category.controller.js +0 -0
  43. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/book.controller.js +0 -0
  44. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/category.controller.js +0 -0
  45. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/developer.controller.js +0 -0
  46. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/doctor-patient.controller.js +0 -0
  47. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/doctor.controller.js +0 -0
  48. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/patient.controller.js +0 -0
  49. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/programming-languange.controller.js +0 -0
  50. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/todo-list-todo.controller.js +0 -0
  51. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/todo-list.controller.js +0 -0
  52. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/todo-todo-list.controller.js +0 -0
  53. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/todo.controller.js +0 -0
  54. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/user-todo-list.controller.js +0 -0
  55. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/controllers/user.controller.js +0 -0
  56. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/appointment.model.js +0 -0
  57. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/book.model.js +0 -0
  58. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/category.model.js +0 -0
  59. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/developer.model.js +0 -0
  60. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/doctor.model.js +0 -0
  61. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/patient.model.js +0 -0
  62. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/programming-language.model.js +0 -0
  63. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/todo-list.model.js +0 -0
  64. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/todo.model.js +0 -0
  65. /package/dist/.sandbox/{6646miobBk → 61612HwhooZ}/models/user.model.js +0 -0
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const repository_1 = require("@loopback/repository");
7
7
  const sequelize_1 = require("../../../sequelize");
8
- const db_datasource_1 = require("../datasources/db.datasource");
8
+ const primary_datasource_1 = require("../datasources/primary.datasource");
9
9
  const index_1 = require("../models/index");
10
10
  let BookRepository = class BookRepository extends sequelize_1.SequelizeCrudRepository {
11
11
  constructor(dataSource, categoryRepositoryGetter) {
@@ -16,9 +16,9 @@ let BookRepository = class BookRepository extends sequelize_1.SequelizeCrudRepos
16
16
  }
17
17
  };
18
18
  BookRepository = tslib_1.__decorate([
19
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
19
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
20
20
  tslib_1.__param(1, repository_1.repository.getter('CategoryRepository')),
21
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource, Function])
21
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource, Function])
22
22
  ], BookRepository);
23
23
  exports.BookRepository = BookRepository;
24
24
  //# sourceMappingURL=book.repository.js.map
@@ -4,7 +4,7 @@ exports.CategoryRepository = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const sequelize_1 = require("../../../sequelize");
7
- const db_datasource_1 = require("../datasources/db.datasource");
7
+ const primary_datasource_1 = require("../datasources/primary.datasource");
8
8
  const index_1 = require("../models/index");
9
9
  let CategoryRepository = class CategoryRepository extends sequelize_1.SequelizeCrudRepository {
10
10
  constructor(dataSource) {
@@ -12,8 +12,8 @@ let CategoryRepository = class CategoryRepository extends sequelize_1.SequelizeC
12
12
  }
13
13
  };
14
14
  CategoryRepository = tslib_1.__decorate([
15
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
16
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource])
15
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
16
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource])
17
17
  ], CategoryRepository);
18
18
  exports.CategoryRepository = CategoryRepository;
19
19
  //# sourceMappingURL=category.repository.js.map
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const repository_1 = require("@loopback/repository");
7
7
  const sequelize_1 = require("../../../sequelize");
8
- const db_datasource_1 = require("../datasources/db.datasource");
8
+ const primary_datasource_1 = require("../datasources/primary.datasource");
9
9
  const index_1 = require("../models/index");
10
10
  let DeveloperRepository = class DeveloperRepository extends sequelize_1.SequelizeCrudRepository {
11
11
  constructor(dataSource, programmingLanguageRepositoryGetter) {
@@ -16,9 +16,9 @@ let DeveloperRepository = class DeveloperRepository extends sequelize_1.Sequeliz
16
16
  }
17
17
  };
18
18
  DeveloperRepository = tslib_1.__decorate([
19
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
19
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
20
20
  tslib_1.__param(1, repository_1.repository.getter('ProgrammingLanguageRepository')),
21
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource, Function])
21
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource, Function])
22
22
  ], DeveloperRepository);
23
23
  exports.DeveloperRepository = DeveloperRepository;
24
24
  //# sourceMappingURL=developer.repository.js.map
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const repository_1 = require("@loopback/repository");
7
7
  const sequelize_1 = require("../../../sequelize");
8
- const db_datasource_1 = require("../datasources/db.datasource");
8
+ const primary_datasource_1 = require("../datasources/primary.datasource");
9
9
  const index_1 = require("../models/index");
10
10
  let DoctorRepository = class DoctorRepository extends sequelize_1.SequelizeCrudRepository {
11
11
  constructor(dataSource, appointmentRepositoryGetter, patientRepositoryGetter) {
@@ -17,10 +17,10 @@ let DoctorRepository = class DoctorRepository extends sequelize_1.SequelizeCrudR
17
17
  }
18
18
  };
19
19
  DoctorRepository = tslib_1.__decorate([
20
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
20
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
21
21
  tslib_1.__param(1, repository_1.repository.getter('AppointmentRepository')),
22
22
  tslib_1.__param(2, repository_1.repository.getter('PatientRepository')),
23
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource, Function, Function])
23
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource, Function, Function])
24
24
  ], DoctorRepository);
25
25
  exports.DoctorRepository = DoctorRepository;
26
26
  //# sourceMappingURL=doctor.repository.js.map
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./todo.repository"), exports);
5
- tslib_1.__exportStar(require("./todo-list.repository"), exports);
6
- tslib_1.__exportStar(require("./user.repository"), exports);
7
- tslib_1.__exportStar(require("./doctor.repository"), exports);
8
- tslib_1.__exportStar(require("./patient.repository"), exports);
9
4
  tslib_1.__exportStar(require("./appointment.repository"), exports);
10
- tslib_1.__exportStar(require("./developer.repository"), exports);
11
- tslib_1.__exportStar(require("./programming-language.repository"), exports);
12
5
  tslib_1.__exportStar(require("./book.repository"), exports);
13
6
  tslib_1.__exportStar(require("./category.repository"), exports);
7
+ tslib_1.__exportStar(require("./developer.repository"), exports);
8
+ tslib_1.__exportStar(require("./doctor.repository"), exports);
9
+ tslib_1.__exportStar(require("./patient.repository"), exports);
10
+ tslib_1.__exportStar(require("./product.repository"), exports);
11
+ tslib_1.__exportStar(require("./programming-language.repository"), exports);
12
+ tslib_1.__exportStar(require("./todo-list.repository"), exports);
13
+ tslib_1.__exportStar(require("./todo.repository"), exports);
14
+ tslib_1.__exportStar(require("./user.repository"), exports);
14
15
  //# sourceMappingURL=index.js.map
15
16
  //# sourceMappingURL=/Users/dianalau/code/loopback/loopback-next/extensions/sequelize/dist/__tests__/fixtures/repositories/index.js.map
@@ -4,7 +4,7 @@ exports.PatientRepository = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const sequelize_1 = require("../../../sequelize");
7
- const db_datasource_1 = require("../datasources/db.datasource");
7
+ const primary_datasource_1 = require("../datasources/primary.datasource");
8
8
  const index_1 = require("../models/index");
9
9
  let PatientRepository = class PatientRepository extends sequelize_1.SequelizeCrudRepository {
10
10
  constructor(dataSource) {
@@ -12,8 +12,8 @@ let PatientRepository = class PatientRepository extends sequelize_1.SequelizeCru
12
12
  }
13
13
  };
14
14
  PatientRepository = tslib_1.__decorate([
15
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
16
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource])
15
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
16
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource])
17
17
  ], PatientRepository);
18
18
  exports.PatientRepository = PatientRepository;
19
19
  //# sourceMappingURL=patient.repository.js.map
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProductRepository = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@loopback/core");
6
+ const sequelize_1 = require("../../../sequelize");
7
+ const secondary_datasource_1 = require("../datasources/secondary.datasource");
8
+ const models_1 = require("../models");
9
+ let ProductRepository = class ProductRepository extends sequelize_1.SequelizeCrudRepository {
10
+ constructor(dataSource) {
11
+ super(models_1.Product, dataSource);
12
+ }
13
+ };
14
+ ProductRepository = tslib_1.__decorate([
15
+ tslib_1.__param(0, (0, core_1.inject)('datasources.secondary')),
16
+ tslib_1.__metadata("design:paramtypes", [secondary_datasource_1.SecondaryDataSource])
17
+ ], ProductRepository);
18
+ exports.ProductRepository = ProductRepository;
19
+ //# sourceMappingURL=product.repository.js.map
20
+ //# sourceMappingURL=/Users/dianalau/code/loopback/loopback-next/extensions/sequelize/dist/__tests__/fixtures/repositories/product.repository.js.map
@@ -4,7 +4,7 @@ exports.ProgrammingLanguageRepository = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const sequelize_1 = require("../../../sequelize");
7
- const db_datasource_1 = require("../datasources/db.datasource");
7
+ const primary_datasource_1 = require("../datasources/primary.datasource");
8
8
  const index_1 = require("../models/index");
9
9
  let ProgrammingLanguageRepository = class ProgrammingLanguageRepository extends sequelize_1.SequelizeCrudRepository {
10
10
  constructor(dataSource) {
@@ -12,8 +12,8 @@ let ProgrammingLanguageRepository = class ProgrammingLanguageRepository extends
12
12
  }
13
13
  };
14
14
  ProgrammingLanguageRepository = tslib_1.__decorate([
15
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
16
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource])
15
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
16
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource])
17
17
  ], ProgrammingLanguageRepository);
18
18
  exports.ProgrammingLanguageRepository = ProgrammingLanguageRepository;
19
19
  //# sourceMappingURL=programming-language.repository.js.map
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const repository_1 = require("@loopback/repository");
7
7
  const sequelize_1 = require("../../../sequelize");
8
- const db_datasource_1 = require("../datasources/db.datasource");
8
+ const primary_datasource_1 = require("../datasources/primary.datasource");
9
9
  const index_1 = require("../models/index");
10
10
  let TodoListRepository = class TodoListRepository extends sequelize_1.SequelizeCrudRepository {
11
11
  constructor(dataSource, todoRepositoryGetter) {
@@ -16,9 +16,9 @@ let TodoListRepository = class TodoListRepository extends sequelize_1.SequelizeC
16
16
  }
17
17
  };
18
18
  TodoListRepository = tslib_1.__decorate([
19
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
19
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
20
20
  tslib_1.__param(1, repository_1.repository.getter('TodoRepository')),
21
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource, Function])
21
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource, Function])
22
22
  ], TodoListRepository);
23
23
  exports.TodoListRepository = TodoListRepository;
24
24
  //# sourceMappingURL=todo-list.repository.js.map
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const core_1 = require("@loopback/core");
6
6
  const repository_1 = require("@loopback/repository");
7
7
  const sequelize_1 = require("../../../sequelize");
8
- const db_datasource_1 = require("../datasources/db.datasource");
8
+ const primary_datasource_1 = require("../datasources/primary.datasource");
9
9
  const index_1 = require("../models/index");
10
10
  let TodoRepository = class TodoRepository extends sequelize_1.SequelizeCrudRepository {
11
11
  constructor(dataSource, todoListRepositoryGetter) {
@@ -16,9 +16,9 @@ let TodoRepository = class TodoRepository extends sequelize_1.SequelizeCrudRepos
16
16
  }
17
17
  };
18
18
  TodoRepository = tslib_1.__decorate([
19
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
19
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
20
20
  tslib_1.__param(1, repository_1.repository.getter('TodoListRepository')),
21
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource, Function])
21
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource, Function])
22
22
  ], TodoRepository);
23
23
  exports.TodoRepository = TodoRepository;
24
24
  //# sourceMappingURL=todo.repository.js.map
@@ -1,15 +1,11 @@
1
1
  "use strict";
2
- // Copyright LoopBack contributors 2022. All Rights Reserved.
3
- // Node module: @loopback/sequelize
4
- // This file is licensed under the MIT License.
5
- // License text available at https://opensource.org/licenses/MIT
6
2
  Object.defineProperty(exports, "__esModule", { value: true });
7
3
  exports.UserRepository = void 0;
8
4
  const tslib_1 = require("tslib");
9
5
  const core_1 = require("@loopback/core");
10
6
  const repository_1 = require("@loopback/repository");
11
7
  const sequelize_1 = require("../../../sequelize");
12
- const db_datasource_1 = require("../datasources/db.datasource");
8
+ const primary_datasource_1 = require("../datasources/primary.datasource");
13
9
  const index_1 = require("../models/index");
14
10
  let UserRepository = class UserRepository extends sequelize_1.SequelizeCrudRepository {
15
11
  constructor(dataSource, todoListRepositoryGetter) {
@@ -20,9 +16,9 @@ let UserRepository = class UserRepository extends sequelize_1.SequelizeCrudRepos
20
16
  }
21
17
  };
22
18
  UserRepository = tslib_1.__decorate([
23
- tslib_1.__param(0, (0, core_1.inject)('datasources.db')),
19
+ tslib_1.__param(0, (0, core_1.inject)('datasources.primary')),
24
20
  tslib_1.__param(1, repository_1.repository.getter('TodoListRepository')),
25
- tslib_1.__metadata("design:paramtypes", [db_datasource_1.DbDataSource, Function])
21
+ tslib_1.__metadata("design:paramtypes", [primary_datasource_1.PrimaryDataSource, Function])
26
22
  ], UserRepository);
27
23
  exports.UserRepository = UserRepository;
28
24
  //# sourceMappingURL=user.repository.js.map
@@ -1,4 +1,4 @@
1
- import { Dialect as AllSequelizeDialects } from 'sequelize';
1
+ import { Dialect as AllSequelizeDialects, PoolOptions } from 'sequelize';
2
2
  export type SupportedLoopbackConnectors = 'mysql' | 'postgresql' | 'oracle' | 'sqlite3' | 'db2';
3
3
  /**
4
4
  * @key Loopback connectors name supported by this extension
@@ -7,3 +7,17 @@ export type SupportedLoopbackConnectors = 'mysql' | 'postgresql' | 'oracle' | 's
7
7
  export declare const SupportedConnectorMapping: {
8
8
  [key in SupportedLoopbackConnectors]?: AllSequelizeDialects;
9
9
  };
10
+ /**
11
+ * Loopback uses different keys for pool options depending on the connector.
12
+ */
13
+ export declare const poolConfigKeys: readonly ["connectionLimit", "acquireTimeout", "min", "max", "idleTimeoutMillis", "minConn", "maxConn", "timeout"];
14
+ export type LoopbackPoolConfigKey = (typeof poolConfigKeys)[number];
15
+ export type PoolingEnabledConnector = Exclude<SupportedLoopbackConnectors, 'db2' | 'sqlite3'>;
16
+ export declare const poolingEnabledConnectors: PoolingEnabledConnector[];
17
+ type IConnectionPoolOptions = {
18
+ [connectorName in PoolingEnabledConnector]?: {
19
+ [sequelizePoolOption in keyof PoolOptions]: LoopbackPoolConfigKey;
20
+ };
21
+ };
22
+ export declare const ConnectionPoolOptions: IConnectionPoolOptions;
23
+ export {};
@@ -4,7 +4,7 @@
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.SupportedConnectorMapping = void 0;
7
+ exports.ConnectionPoolOptions = exports.poolingEnabledConnectors = exports.poolConfigKeys = exports.SupportedConnectorMapping = void 0;
8
8
  /**
9
9
  * @key Loopback connectors name supported by this extension
10
10
  * @value Equivalent Dialect in Sequelize
@@ -16,4 +16,41 @@ exports.SupportedConnectorMapping = {
16
16
  sqlite3: 'sqlite',
17
17
  db2: 'db2',
18
18
  };
19
+ /**
20
+ * Loopback uses different keys for pool options depending on the connector.
21
+ */
22
+ exports.poolConfigKeys = [
23
+ // mysql
24
+ 'connectionLimit',
25
+ 'acquireTimeout',
26
+ // postgresql
27
+ 'min',
28
+ 'max',
29
+ 'idleTimeoutMillis',
30
+ // oracle
31
+ 'minConn',
32
+ 'maxConn',
33
+ 'timeout',
34
+ ];
35
+ exports.poolingEnabledConnectors = [
36
+ 'mysql',
37
+ 'oracle',
38
+ 'postgresql',
39
+ ];
40
+ exports.ConnectionPoolOptions = {
41
+ mysql: {
42
+ max: 'connectionLimit',
43
+ acquire: 'acquireTimeout',
44
+ },
45
+ postgresql: {
46
+ min: 'min',
47
+ max: 'max',
48
+ idle: 'idleTimeoutMillis',
49
+ },
50
+ oracle: {
51
+ min: 'minConn',
52
+ max: 'maxConn',
53
+ idle: 'timeout',
54
+ },
55
+ };
19
56
  //# sourceMappingURL=connector-mapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector-mapping.js","sourceRoot":"","sources":["../../src/sequelize/connector-mapping.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,mCAAmC;AACnC,+CAA+C;AAC/C,gEAAgE;;;AAUhE;;;GAGG;AACU,QAAA,yBAAyB,GAElC;IACF,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,UAAU;IACtB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,KAAK;CACX,CAAC"}
1
+ {"version":3,"file":"connector-mapping.js","sourceRoot":"","sources":["../../src/sequelize/connector-mapping.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,mCAAmC;AACnC,+CAA+C;AAC/C,gEAAgE;;;AAUhE;;;GAGG;AACU,QAAA,yBAAyB,GAElC;IACF,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,UAAU;IACtB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,KAAK;CACX,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,QAAQ;IACR,iBAAiB;IACjB,gBAAgB;IAChB,aAAa;IACb,KAAK;IACL,KAAK;IACL,mBAAmB;IACnB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACD,CAAC;AAQE,QAAA,wBAAwB,GAA8B;IACjE,OAAO;IACP,QAAQ;IACR,YAAY;CACb,CAAC;AAQW,QAAA,qBAAqB,GAA2B;IAC3D,KAAK,EAAE;QACL,GAAG,EAAE,iBAAiB;QACtB,OAAO,EAAE,gBAAgB;KAC1B;IACD,UAAU,EAAE;QACV,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,mBAAmB;KAC1B;IACD,MAAM,EAAE;QACN,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB;CACF,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { LifeCycleObserver } from '@loopback/core';
2
2
  import { AnyObject } from '@loopback/repository';
3
- import { Options as SequelizeOptions, Sequelize } from 'sequelize';
3
+ import { PoolOptions, Sequelize, Options as SequelizeOptions, Transaction, TransactionOptions } from 'sequelize';
4
4
  import { SupportedLoopbackConnectors } from './connector-mapping';
5
+ /**
6
+ * Sequelize DataSource Class
7
+ */
5
8
  export declare class SequelizeDataSource implements LifeCycleObserver {
6
9
  config: SequelizeDataSourceConfig;
7
10
  name: string;
@@ -11,9 +14,17 @@ export declare class SequelizeDataSource implements LifeCycleObserver {
11
14
  sequelizeConfig: SequelizeDataSourceConfig;
12
15
  init(): Promise<void>;
13
16
  start(..._injectedArgs: unknown[]): Promise<void>;
14
- stop(): void;
17
+ stop(): Promise<void>;
15
18
  automigrate(): void;
16
19
  autoupdate(): void;
20
+ /**
21
+ * Begin a new transaction.
22
+ *
23
+ * @param [options] Options {isolationLevel: '...'}
24
+ * @returns A promise which resolves to a Sequelize Transaction object
25
+ */
26
+ beginTransaction(options?: TransactionOptions | TransactionOptions['isolationLevel']): Promise<Transaction>;
27
+ getPoolOptions(): PoolOptions | undefined;
17
28
  }
18
29
  export type SequelizeDataSourceConfig = SequelizeOptions & {
19
30
  name?: string;
@@ -7,6 +7,9 @@ const sequelize_1 = require("sequelize");
7
7
  const connector_mapping_1 = require("./connector-mapping");
8
8
  const debug = (0, debug_1.default)('loopback:sequelize:datasource');
9
9
  const queryLogging = (0, debug_1.default)('loopback:sequelize:queries');
10
+ /**
11
+ * Sequelize DataSource Class
12
+ */
10
13
  class SequelizeDataSource {
11
14
  constructor(config) {
12
15
  var _a;
@@ -18,42 +21,92 @@ class SequelizeDataSource {
18
21
  }
19
22
  }
20
23
  async init() {
21
- var _a;
22
- const connector = this.config.connector;
23
- const storage = this.config.file;
24
- const schema = this.config.schema;
24
+ const { config } = this;
25
+ const { connector, file, schema, database, host, port, user, username, password, } = config;
25
26
  this.sequelizeConfig = {
26
- database: this.config.database,
27
- ...(connector
28
- ? { dialect: connector_mapping_1.SupportedConnectorMapping[connector] }
29
- : {}),
30
- ...(storage ? { storage: storage } : {}),
31
- host: this.config.host,
32
- port: this.config.port,
33
- ...(schema ? { schema: schema } : {}),
34
- username: (_a = this.config.user) !== null && _a !== void 0 ? _a : this.config.username,
35
- password: this.config.password,
27
+ database,
28
+ dialect: connector ? connector_mapping_1.SupportedConnectorMapping[connector] : undefined,
29
+ storage: file,
30
+ host,
31
+ port,
32
+ schema,
33
+ username: user !== null && user !== void 0 ? user : username,
34
+ password,
36
35
  logging: queryLogging,
36
+ pool: this.getPoolOptions(),
37
37
  };
38
38
  this.sequelize = new sequelize_1.Sequelize(this.sequelizeConfig);
39
- try {
40
- await this.sequelize.authenticate();
41
- debug('Connection has been established successfully.');
42
- }
43
- catch (error) {
44
- console.error('Unable to connect to the database:', error);
45
- }
39
+ await this.sequelize.authenticate();
40
+ debug('Connection has been established successfully.');
46
41
  }
47
42
  async start(..._injectedArgs) { }
48
- stop() {
49
- var _a, _b;
50
- (_b = (_a = this.sequelize) === null || _a === void 0 ? void 0 : _a.close) === null || _b === void 0 ? void 0 : _b.call(_a).catch(console.error);
43
+ async stop() {
44
+ var _a;
45
+ await ((_a = this.sequelize) === null || _a === void 0 ? void 0 : _a.close());
51
46
  }
52
47
  automigrate() {
53
- throw new Error('Migrations are not supported when using SequelizeDatasource, Use `db-migrate` package instead.');
48
+ throw new Error('SequelizeDataSourceError: Migrations are not supported. Use `db-migrate` package instead.');
54
49
  }
55
50
  autoupdate() {
56
- throw new Error('Migrations are not supported when using SequelizeDatasource, Use `db-migrate` package instead.');
51
+ throw new Error('SequelizeDataSourceError: Migrations are not supported. Use `db-migrate` package instead.');
52
+ }
53
+ /**
54
+ * Begin a new transaction.
55
+ *
56
+ * @param [options] Options {isolationLevel: '...'}
57
+ * @returns A promise which resolves to a Sequelize Transaction object
58
+ */
59
+ async beginTransaction(options) {
60
+ var _a;
61
+ /**
62
+ * Default Isolation level for transactions is `READ_COMMITTED`, to be consistent with loopback default.
63
+ * See: https://loopback.io/doc/en/lb4/Using-database-transactions.html#isolation-levels
64
+ */
65
+ const DEFAULT_ISOLATION_LEVEL = sequelize_1.Transaction.ISOLATION_LEVELS.READ_COMMITTED;
66
+ if (typeof options === 'string') {
67
+ // Received `isolationLevel` as the first argument
68
+ options = {
69
+ isolationLevel: options,
70
+ };
71
+ }
72
+ else if (options === undefined) {
73
+ options = {
74
+ isolationLevel: DEFAULT_ISOLATION_LEVEL,
75
+ };
76
+ }
77
+ else {
78
+ options.isolationLevel =
79
+ (_a = options.isolationLevel) !== null && _a !== void 0 ? _a : DEFAULT_ISOLATION_LEVEL;
80
+ }
81
+ return this.sequelize.transaction(options);
82
+ }
83
+ getPoolOptions() {
84
+ const config = this.config;
85
+ const specifiedPoolOptions = Object.keys(config).some(key => connector_mapping_1.poolConfigKeys.includes(key));
86
+ const supportsPooling = config.connector &&
87
+ connector_mapping_1.poolingEnabledConnectors.includes(config.connector);
88
+ if (!(supportsPooling && specifiedPoolOptions)) {
89
+ return;
90
+ }
91
+ const optionMapping = connector_mapping_1.ConnectionPoolOptions[config.connector];
92
+ if (!optionMapping) {
93
+ return;
94
+ }
95
+ const { min, max, acquire, idle } = optionMapping;
96
+ const options = {};
97
+ if (max && config[max]) {
98
+ options.max = config[max];
99
+ }
100
+ if (min && config[min]) {
101
+ options.min = config[min];
102
+ }
103
+ if (acquire && config[acquire]) {
104
+ options.acquire = config[acquire];
105
+ }
106
+ if (idle && config[idle]) {
107
+ options.idle = config[idle];
108
+ }
109
+ return options;
57
110
  }
58
111
  }
59
112
  exports.SequelizeDataSource = SequelizeDataSource;
@@ -1 +1 @@
1
- {"version":3,"file":"sequelize.datasource.base.js","sourceRoot":"","sources":["../../src/sequelize/sequelize.datasource.base.ts"],"names":[],"mappings":";;;;AAEA,0DAAiC;AACjC,yCAA0E;AAC1E,2DAG6B;AAE7B,MAAM,KAAK,GAAG,IAAA,eAAY,EAAC,+BAA+B,CAAC,CAAC;AAC5D,MAAM,YAAY,GAAG,IAAA,eAAY,EAAC,4BAA4B,CAAC,CAAC;AAEhE,MAAa,mBAAmB;IAG9B,YAAmB,MAAiC;;QAAjC,WAAM,GAAN,MAAM,CAA2B;QADpD,aAAQ,GAAG,EAAE,CAAC;QAEZ,IACE,IAAI,CAAC,MAAM,CAAC,SAAS;YACrB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,6CAAyB,CAAC,EACrD;YACA,MAAM,IAAI,KAAK,CACb,uBACE,MAAA,IAAI,CAAC,MAAM,CAAC,SAAS,mCAAI,IAAI,CAAC,MAAM,CAAC,OACvC,oBAAoB,CACrB,CAAC;SACH;IACH,CAAC;IAID,KAAK,CAAC,IAAI;;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAElC,IAAI,CAAC,eAAe,GAAG;YACrB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,GAAG,CAAC,SAAS;gBACX,CAAC,CAAC,EAAC,OAAO,EAAE,6CAAyB,CAAC,SAAS,CAAY,EAAC;gBAC5D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,QAAQ,EAAE,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,mCAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;YAClD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,OAAO,EAAE,YAAY;SACtB,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAErD,IAAI;YACF,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YACpC,KAAK,CAAC,+CAA+C,CAAC,CAAC;SACxD;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;SAC5D;IACH,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,GAAG,aAAwB,IAAkB,CAAC;IAC1D,IAAI;;QACF,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,mDAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,WAAW;QACT,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IACD,UAAU;QACR,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;CACF;AA7DD,kDA6DC"}
1
+ {"version":3,"file":"sequelize.datasource.base.js","sourceRoot":"","sources":["../../src/sequelize/sequelize.datasource.base.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { AnyObject, BelongsToAccessor, Count, DataObject, Entity, EntityCrudRepository, Fields, Filter, FilterExcludingWhere, Getter, HasManyRepositoryFactory, HasManyThroughRepositoryFactory, HasOneRepositoryFactory, InclusionFilter, InclusionResolver, PositionalParameters, PropertyDefinition, ReferencesManyAccessor, Where } from '@loopback/repository';
2
- import { Attributes, FindAttributeOptions, Includeable, Model, ModelAttributes, ModelStatic, Order, SyncOptions, WhereOptions } from 'sequelize';
2
+ import { Attributes, FindAttributeOptions, Includeable, Model, ModelAttributes, ModelStatic, Order, SyncOptions, Transaction, TransactionOptions, WhereOptions } from 'sequelize';
3
3
  import { operatorTranslations } from './operator-translation';
4
4
  import { SequelizeDataSource } from './sequelize.datasource.base';
5
5
  import { SequelizeModel } from './sequelize.model';
@@ -22,14 +22,14 @@ export declare class SequelizeCrudRepository<T extends Entity, ID, Relations ext
22
22
  /**
23
23
  * Object keys used in models for set database specific settings.
24
24
  * Example: In model property definition one can use postgresql dataType as float
25
- * {
25
+ * `{
26
26
  * type: 'number',
27
27
  * postgresql: {
28
28
  * dataType: 'float',
29
29
  * precision: 20,
30
30
  * scale: 4,
31
31
  * },
32
- * }
32
+ * }`
33
33
  *
34
34
  * This array of keys is used while building model definition for sequelize.
35
35
  */
@@ -228,4 +228,5 @@ export declare class SequelizeCrudRepository<T extends Entity, ID, Relations ext
228
228
  * @param targetRepo - Target repository instance
229
229
  */
230
230
  protected createReferencesManyAccessorFor<Target extends Entity, TargetId>(relationName: string, targetRepoGetter: Getter<EntityCrudRepository<Target, TargetId>>): ReferencesManyAccessor<Target, ID>;
231
+ beginTransaction(options?: TransactionOptions | TransactionOptions['isolationLevel']): Promise<Transaction>;
231
232
  }
@@ -28,14 +28,14 @@ class SequelizeCrudRepository {
28
28
  /**
29
29
  * Object keys used in models for set database specific settings.
30
30
  * Example: In model property definition one can use postgresql dataType as float
31
- * {
31
+ * `{
32
32
  * type: 'number',
33
33
  * postgresql: {
34
34
  * dataType: 'float',
35
35
  * precision: 20,
36
36
  * scale: 4,
37
37
  * },
38
- * }
38
+ * }`
39
39
  *
40
40
  * This array of keys is used while building model definition for sequelize.
41
41
  */
@@ -54,7 +54,6 @@ class SequelizeCrudRepository {
54
54
  const data = await this.sequelizeModel
55
55
  .create(entity, options)
56
56
  .catch(error => {
57
- console.error(error);
58
57
  err = error;
59
58
  });
60
59
  if (!data) {
@@ -460,8 +459,11 @@ class SequelizeCrudRepository {
460
459
  * @param options Sequelize Sync Options
461
460
  */
462
461
  async syncSequelizeModel(options = {}) {
463
- var _a;
464
- await ((_a = this.dataSource.sequelize) === null || _a === void 0 ? void 0 : _a.models[this.entityClass.modelName].sync(options).catch(console.error));
462
+ if (!this.dataSource.sequelize) {
463
+ throw new Error('Sequelize instance is not attached to the datasource yet.');
464
+ }
465
+ await this.dataSource.sequelize.authenticate();
466
+ await this.dataSource.sequelize.models[this.entityClass.modelName].sync(options);
465
467
  }
466
468
  /**
467
469
  * Run CREATE TABLE query for the all sequelize models, Useful for quick testing
@@ -469,7 +471,7 @@ class SequelizeCrudRepository {
469
471
  */
470
472
  async syncLoadedSequelizeModels(options = {}) {
471
473
  var _a;
472
- await ((_a = this.dataSource.sequelize) === null || _a === void 0 ? void 0 : _a.sync(options).catch(console.error));
474
+ await ((_a = this.dataSource.sequelize) === null || _a === void 0 ? void 0 : _a.sync(options));
473
475
  }
474
476
  /**
475
477
  * Get Sequelize Model Attributes
@@ -489,7 +491,7 @@ class SequelizeCrudRepository {
489
491
  ['String', 'string'].includes(definition[propName].type.toString());
490
492
  if (definition[propName].type === Number ||
491
493
  ['Number', 'number'].includes(definition[propName].type.toString())) {
492
- dataType = sequelize_1.DataTypes.NUMBER;
494
+ dataType = sequelize_1.DataTypes.INTEGER;
493
495
  // handle float
494
496
  for (const dbKey of this.DB_SPECIFIC_SETTINGS_KEYS) {
495
497
  if (!(dbKey in definition[propName])) {
@@ -830,6 +832,9 @@ class SequelizeCrudRepository {
830
832
  const meta = this.entityClass.definition.relations[relationName];
831
833
  return (0, repository_1.createReferencesManyAccessor)(meta, targetRepoGetter, this);
832
834
  }
835
+ async beginTransaction(options) {
836
+ return this.dataSource.beginTransaction(options);
837
+ }
833
838
  }
834
839
  exports.SequelizeCrudRepository = SequelizeCrudRepository;
835
840
  //# sourceMappingURL=sequelize.repository.base.js.map