@loopback/docs 5.1.7 → 5.2.1

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 (140) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/package.json +5 -4
  3. package/site/Application-generator.md +1 -1
  4. package/site/CHANGELOG.md +1 -0
  5. package/site/Discovering-models.md +8 -0
  6. package/site/MONOREPO.md +1 -0
  7. package/site/apidocs/index.md +1 -0
  8. package/site/apidocs/sequelize.default_loopback_sequelize_options.md +23 -0
  9. package/site/apidocs/sequelize.loopbacksequelizecomponent._constructor_.md +31 -0
  10. package/site/apidocs/sequelize.loopbacksequelizecomponent.md +29 -0
  11. package/site/apidocs/sequelize.loopbacksequelizecomponentbindings.component.md +21 -0
  12. package/site/apidocs/sequelize.loopbacksequelizecomponentbindings.md +30 -0
  13. package/site/apidocs/sequelize.loopbacksequelizecomponentoptions.md +23 -0
  14. package/site/apidocs/sequelize.md +50 -0
  15. package/site/apidocs/sequelize.sequelizecrudrepository._constructor_.md +33 -0
  16. package/site/apidocs/sequelize.sequelizecrudrepository.begintransaction.md +32 -0
  17. package/site/apidocs/sequelize.sequelizecrudrepository.buildsequelizeattributefilter.md +36 -0
  18. package/site/apidocs/sequelize.sequelizecrudrepository.buildsequelizeincludefilter.md +39 -0
  19. package/site/apidocs/sequelize.sequelizecrudrepository.buildsequelizeorder.md +36 -0
  20. package/site/apidocs/sequelize.sequelizecrudrepository.buildsequelizewhere.md +36 -0
  21. package/site/apidocs/sequelize.sequelizecrudrepository.count.md +33 -0
  22. package/site/apidocs/sequelize.sequelizecrudrepository.create.md +33 -0
  23. package/site/apidocs/sequelize.sequelizecrudrepository.createall.md +33 -0
  24. package/site/apidocs/sequelize.sequelizecrudrepository.createbelongstoaccessorfor.md +37 -0
  25. package/site/apidocs/sequelize.sequelizecrudrepository.createhasmanyrepositoryfactoryfor.md +59 -0
  26. package/site/apidocs/sequelize.sequelizecrudrepository.createhasmanythroughrepositoryfactoryfor.md +63 -0
  27. package/site/apidocs/sequelize.sequelizecrudrepository.createhasonerepositoryfactoryfor.md +37 -0
  28. package/site/apidocs/sequelize.sequelizecrudrepository.createreferencesmanyaccessorfor.md +35 -0
  29. package/site/apidocs/sequelize.sequelizecrudrepository.datasource.md +21 -0
  30. package/site/apidocs/sequelize.sequelizecrudrepository.db_specific_settings_keys.md +25 -0
  31. package/site/apidocs/sequelize.sequelizecrudrepository.default_order_style.md +23 -0
  32. package/site/apidocs/sequelize.sequelizecrudrepository.delete.md +33 -0
  33. package/site/apidocs/sequelize.sequelizecrudrepository.deleteall.md +33 -0
  34. package/site/apidocs/sequelize.sequelizecrudrepository.deletebyid.md +33 -0
  35. package/site/apidocs/sequelize.sequelizecrudrepository.entityclass.md +23 -0
  36. package/site/apidocs/sequelize.sequelizecrudrepository.excludehiddenprops.md +36 -0
  37. package/site/apidocs/sequelize.sequelizecrudrepository.execute.md +32 -0
  38. package/site/apidocs/sequelize.sequelizecrudrepository.exists.md +33 -0
  39. package/site/apidocs/sequelize.sequelizecrudrepository.find.md +33 -0
  40. package/site/apidocs/sequelize.sequelizecrudrepository.findbyid.md +34 -0
  41. package/site/apidocs/sequelize.sequelizecrudrepository.findone.md +33 -0
  42. package/site/apidocs/sequelize.sequelizecrudrepository.getsequelizemodel.md +38 -0
  43. package/site/apidocs/sequelize.sequelizecrudrepository.getsequelizemodelattributes.md +40 -0
  44. package/site/apidocs/sequelize.sequelizecrudrepository.getsequelizeoperator.md +36 -0
  45. package/site/apidocs/sequelize.sequelizecrudrepository.includereferencesifrequested.md +40 -0
  46. package/site/apidocs/sequelize.sequelizecrudrepository.inclusionresolvers.md +21 -0
  47. package/site/apidocs/sequelize.sequelizecrudrepository.md +82 -0
  48. package/site/apidocs/sequelize.sequelizecrudrepository.registerinclusionresolver.md +35 -0
  49. package/site/apidocs/sequelize.sequelizecrudrepository.replacebyid.md +34 -0
  50. package/site/apidocs/sequelize.sequelizecrudrepository.save.md +33 -0
  51. package/site/apidocs/sequelize.sequelizecrudrepository.sequelizemodel.md +23 -0
  52. package/site/apidocs/sequelize.sequelizecrudrepository.syncloadedsequelizemodels.md +34 -0
  53. package/site/apidocs/sequelize.sequelizecrudrepository.syncsequelizemodel.md +34 -0
  54. package/site/apidocs/sequelize.sequelizecrudrepository.toentities.md +32 -0
  55. package/site/apidocs/sequelize.sequelizecrudrepository.update.md +33 -0
  56. package/site/apidocs/sequelize.sequelizecrudrepository.updateall.md +34 -0
  57. package/site/apidocs/sequelize.sequelizecrudrepository.updatebyid.md +34 -0
  58. package/site/apidocs/sequelize.sequelizedatasource._constructor_.md +30 -0
  59. package/site/apidocs/sequelize.sequelizedatasource.automigrate.md +25 -0
  60. package/site/apidocs/sequelize.sequelizedatasource.autoupdate.md +25 -0
  61. package/site/apidocs/sequelize.sequelizedatasource.begintransaction.md +36 -0
  62. package/site/apidocs/sequelize.sequelizedatasource.config.md +21 -0
  63. package/site/apidocs/sequelize.sequelizedatasource.getpooloptions.md +25 -0
  64. package/site/apidocs/sequelize.sequelizedatasource.init.md +25 -0
  65. package/site/apidocs/sequelize.sequelizedatasource.md +53 -0
  66. package/site/apidocs/sequelize.sequelizedatasource.name.md +21 -0
  67. package/site/apidocs/sequelize.sequelizedatasource.sequelize.md +21 -0
  68. package/site/apidocs/sequelize.sequelizedatasource.sequelizeconfig.md +21 -0
  69. package/site/apidocs/sequelize.sequelizedatasource.settings.md +21 -0
  70. package/site/apidocs/sequelize.sequelizedatasource.start.md +32 -0
  71. package/site/apidocs/sequelize.sequelizedatasource.stop.md +25 -0
  72. package/site/apidocs/sequelize.sequelizedatasourceconfig.md +28 -0
  73. package/site/changelogs/bodyparsers/rest-msgpack/CHANGELOG.md +19 -0
  74. package/site/changelogs/examples/access-control-migration/CHANGELOG.md +16 -0
  75. package/site/changelogs/examples/binding-resolution/CHANGELOG.md +16 -0
  76. package/site/changelogs/examples/context/CHANGELOG.md +16 -0
  77. package/site/changelogs/examples/express-composition/CHANGELOG.md +16 -0
  78. package/site/changelogs/examples/file-transfer/CHANGELOG.md +16 -0
  79. package/site/changelogs/examples/graphql/CHANGELOG.md +19 -0
  80. package/site/changelogs/examples/greeter-extension/CHANGELOG.md +16 -0
  81. package/site/changelogs/examples/greeting-app/CHANGELOG.md +16 -0
  82. package/site/changelogs/examples/hello-world/CHANGELOG.md +16 -0
  83. package/site/changelogs/examples/lb3-application/CHANGELOG.md +16 -0
  84. package/site/changelogs/examples/log-extension/CHANGELOG.md +16 -0
  85. package/site/changelogs/examples/metrics-prometheus/CHANGELOG.md +16 -0
  86. package/site/changelogs/examples/multi-tenancy/CHANGELOG.md +16 -0
  87. package/site/changelogs/examples/passport-login/CHANGELOG.md +16 -0
  88. package/site/changelogs/examples/references-many/CHANGELOG.md +16 -0
  89. package/site/changelogs/examples/rest-crud/CHANGELOG.md +16 -0
  90. package/site/changelogs/examples/rpc-server/CHANGELOG.md +16 -0
  91. package/site/changelogs/examples/soap-calculator/CHANGELOG.md +16 -0
  92. package/site/changelogs/examples/socketio/CHANGELOG.md +16 -0
  93. package/site/changelogs/examples/todo/CHANGELOG.md +16 -0
  94. package/site/changelogs/examples/todo-jwt/CHANGELOG.md +16 -0
  95. package/site/changelogs/examples/todo-list/CHANGELOG.md +16 -0
  96. package/site/changelogs/examples/validation-app/CHANGELOG.md +16 -0
  97. package/site/changelogs/examples/webpack/CHANGELOG.md +16 -0
  98. package/site/changelogs/extensions/apiconnect/CHANGELOG.md +19 -0
  99. package/site/changelogs/extensions/authentication-jwt/CHANGELOG.md +19 -0
  100. package/site/changelogs/extensions/authentication-passport/CHANGELOG.md +19 -0
  101. package/site/changelogs/extensions/context-explorer/CHANGELOG.md +19 -0
  102. package/site/changelogs/extensions/cron/CHANGELOG.md +19 -0
  103. package/site/changelogs/extensions/graphql/CHANGELOG.md +19 -0
  104. package/site/changelogs/extensions/health/CHANGELOG.md +19 -0
  105. package/site/changelogs/extensions/logging/CHANGELOG.md +19 -0
  106. package/site/changelogs/extensions/metrics/CHANGELOG.md +19 -0
  107. package/site/changelogs/extensions/pooling/CHANGELOG.md +19 -0
  108. package/site/changelogs/extensions/sequelize/CHANGELOG.md +22 -0
  109. package/site/changelogs/extensions/socketio/CHANGELOG.md +19 -0
  110. package/site/changelogs/extensions/typeorm/CHANGELOG.md +19 -0
  111. package/site/changelogs/fixtures/mock-oauth2-provider/CHANGELOG.md +27 -0
  112. package/site/changelogs/packages/authentication/CHANGELOG.md +19 -0
  113. package/site/changelogs/packages/authorization/CHANGELOG.md +19 -0
  114. package/site/changelogs/packages/boot/CHANGELOG.md +16 -0
  115. package/site/changelogs/packages/booter-lb3app/CHANGELOG.md +19 -0
  116. package/site/changelogs/packages/build/CHANGELOG.md +22 -0
  117. package/site/changelogs/packages/cli/CHANGELOG.md +46 -0
  118. package/site/changelogs/packages/context/CHANGELOG.md +16 -0
  119. package/site/changelogs/packages/core/CHANGELOG.md +16 -0
  120. package/site/changelogs/packages/eslint-config/CHANGELOG.md +19 -0
  121. package/site/changelogs/packages/express/CHANGELOG.md +19 -0
  122. package/site/changelogs/packages/filter/CHANGELOG.md +27 -0
  123. package/site/changelogs/packages/http-caching-proxy/CHANGELOG.md +31 -0
  124. package/site/changelogs/packages/http-server/CHANGELOG.md +16 -0
  125. package/site/changelogs/packages/metadata/CHANGELOG.md +27 -0
  126. package/site/changelogs/packages/model-api-builder/CHANGELOG.md +19 -0
  127. package/site/changelogs/packages/monorepo/CHANGELOG.md +19 -0
  128. package/site/changelogs/packages/openapi-spec-builder/CHANGELOG.md +27 -0
  129. package/site/changelogs/packages/openapi-v3/CHANGELOG.md +19 -0
  130. package/site/changelogs/packages/repository/CHANGELOG.md +19 -0
  131. package/site/changelogs/packages/repository-json-schema/CHANGELOG.md +19 -0
  132. package/site/changelogs/packages/repository-tests/CHANGELOG.md +19 -0
  133. package/site/changelogs/packages/rest/CHANGELOG.md +19 -0
  134. package/site/changelogs/packages/rest-crud/CHANGELOG.md +19 -0
  135. package/site/changelogs/packages/rest-explorer/CHANGELOG.md +19 -0
  136. package/site/changelogs/packages/security/CHANGELOG.md +19 -0
  137. package/site/changelogs/packages/service-proxy/CHANGELOG.md +19 -0
  138. package/site/changelogs/packages/testlab/CHANGELOG.md +19 -0
  139. package/site/changelogs/packages/tsdocs/CHANGELOG.md +27 -0
  140. package/site/readmes/loopback-next/extensions/sequelize/README.md +270 -0
@@ -13,6 +13,25 @@ permalink: /doc/en/lb4/changelog.rest.html
13
13
  All notable changes to this project will be documented in this file.
14
14
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
15
15
 
16
+ ## [12.0.9](https://github.com/loopbackio/loopback-next/compare/@loopback/rest@12.0.8...@loopback/rest@12.0.9) (2023-03-09)
17
+
18
+ **Note:** Version bump only for package @loopback/rest
19
+
20
+
21
+
22
+
23
+
24
+ ## [12.0.8](https://github.com/loopbackio/loopback-next/compare/@loopback/rest@12.0.7...@loopback/rest@12.0.8) (2023-02-07)
25
+
26
+
27
+ ### Reverts
28
+
29
+ * "chore: update dependency rimraf to v4" ([c516d5e](https://github.com/loopbackio/loopback-next/commit/c516d5e33e2d2ce950c6811305e7da3fe40ca9c6))
30
+
31
+
32
+
33
+
34
+
16
35
  ## [12.0.7](https://github.com/loopbackio/loopback-next/compare/@loopback/rest@12.0.6...@loopback/rest@12.0.7) (2023-01-09)
17
36
 
18
37
  **Note:** Version bump only for package @loopback/rest
@@ -13,6 +13,25 @@ permalink: /doc/en/lb4/changelog.rest-crud.html
13
13
  All notable changes to this project will be documented in this file.
14
14
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
15
15
 
16
+ ## [0.15.8](https://github.com/loopbackio/loopback-next/compare/@loopback/rest-crud@0.15.7...@loopback/rest-crud@0.15.8) (2023-03-09)
17
+
18
+ **Note:** Version bump only for package @loopback/rest-crud
19
+
20
+
21
+
22
+
23
+
24
+ ## [0.15.7](https://github.com/loopbackio/loopback-next/compare/@loopback/rest-crud@0.15.6...@loopback/rest-crud@0.15.7) (2023-02-07)
25
+
26
+
27
+ ### Reverts
28
+
29
+ * "chore: update dependency rimraf to v4" ([c516d5e](https://github.com/loopbackio/loopback-next/commit/c516d5e33e2d2ce950c6811305e7da3fe40ca9c6))
30
+
31
+
32
+
33
+
34
+
16
35
  ## [0.15.6](https://github.com/loopbackio/loopback-next/compare/@loopback/rest-crud@0.15.5...@loopback/rest-crud@0.15.6) (2023-01-09)
17
36
 
18
37
  **Note:** Version bump only for package @loopback/rest-crud
@@ -13,6 +13,25 @@ permalink: /doc/en/lb4/changelog.rest-explorer.html
13
13
  All notable changes to this project will be documented in this file.
14
14
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
15
15
 
16
+ ## [5.0.9](https://github.com/loopbackio/loopback-next/compare/@loopback/rest-explorer@5.0.8...@loopback/rest-explorer@5.0.9) (2023-03-09)
17
+
18
+ **Note:** Version bump only for package @loopback/rest-explorer
19
+
20
+
21
+
22
+
23
+
24
+ ## [5.0.8](https://github.com/loopbackio/loopback-next/compare/@loopback/rest-explorer@5.0.7...@loopback/rest-explorer@5.0.8) (2023-02-07)
25
+
26
+
27
+ ### Reverts
28
+
29
+ * "chore: update dependency rimraf to v4" ([c516d5e](https://github.com/loopbackio/loopback-next/commit/c516d5e33e2d2ce950c6811305e7da3fe40ca9c6))
30
+
31
+
32
+
33
+
34
+
16
35
  ## [5.0.7](https://github.com/loopbackio/loopback-next/compare/@loopback/rest-explorer@5.0.6...@loopback/rest-explorer@5.0.7) (2023-01-09)
17
36
 
18
37
  **Note:** Version bump only for package @loopback/rest-explorer
@@ -13,6 +13,25 @@ permalink: /doc/en/lb4/changelog.security.html
13
13
  All notable changes to this project will be documented in this file.
14
14
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
15
15
 
16
+ ## [0.8.9](https://github.com/loopbackio/loopback-next/compare/@loopback/security@0.8.8...@loopback/security@0.8.9) (2023-03-09)
17
+
18
+ **Note:** Version bump only for package @loopback/security
19
+
20
+
21
+
22
+
23
+
24
+ ## [0.8.8](https://github.com/loopbackio/loopback-next/compare/@loopback/security@0.8.7...@loopback/security@0.8.8) (2023-02-07)
25
+
26
+
27
+ ### Reverts
28
+
29
+ * "chore: update dependency rimraf to v4" ([c516d5e](https://github.com/loopbackio/loopback-next/commit/c516d5e33e2d2ce950c6811305e7da3fe40ca9c6))
30
+
31
+
32
+
33
+
34
+
16
35
  ## [0.8.7](https://github.com/loopbackio/loopback-next/compare/@loopback/security@0.8.6...@loopback/security@0.8.7) (2023-01-09)
17
36
 
18
37
  **Note:** Version bump only for package @loopback/security
@@ -13,6 +13,25 @@ permalink: /doc/en/lb4/changelog.service-proxy.html
13
13
  All notable changes to this project will be documented in this file.
14
14
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
15
15
 
16
+ ## [5.0.9](https://github.com/loopbackio/loopback-next/compare/@loopback/service-proxy@5.0.8...@loopback/service-proxy@5.0.9) (2023-03-09)
17
+
18
+ **Note:** Version bump only for package @loopback/service-proxy
19
+
20
+
21
+
22
+
23
+
24
+ ## [5.0.8](https://github.com/loopbackio/loopback-next/compare/@loopback/service-proxy@5.0.7...@loopback/service-proxy@5.0.8) (2023-02-07)
25
+
26
+
27
+ ### Reverts
28
+
29
+ * "chore: update dependency rimraf to v4" ([c516d5e](https://github.com/loopbackio/loopback-next/commit/c516d5e33e2d2ce950c6811305e7da3fe40ca9c6))
30
+
31
+
32
+
33
+
34
+
16
35
  ## [5.0.7](https://github.com/loopbackio/loopback-next/compare/@loopback/service-proxy@5.0.6...@loopback/service-proxy@5.0.7) (2023-01-09)
17
36
 
18
37
  **Note:** Version bump only for package @loopback/service-proxy
@@ -13,6 +13,25 @@ permalink: /doc/en/lb4/changelog.testlab.html
13
13
  All notable changes to this project will be documented in this file.
14
14
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
15
15
 
16
+ ## [5.0.10](https://github.com/loopbackio/loopback-next/compare/@loopback/testlab@5.0.9...@loopback/testlab@5.0.10) (2023-04-13)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * refresh package lock files ([9979eb1](https://github.com/loopbackio/loopback-next/commit/9979eb183b6c6cd5775da7478cdede8a92ce0d5e)), closes [#9351](https://github.com/loopbackio/loopback-next/issues/9351)
22
+
23
+
24
+
25
+
26
+
27
+ ## [5.0.9](https://github.com/loopbackio/loopback-next/compare/@loopback/testlab@5.0.8...@loopback/testlab@5.0.9) (2023-03-09)
28
+
29
+ **Note:** Version bump only for package @loopback/testlab
30
+
31
+
32
+
33
+
34
+
16
35
  ## [5.0.8](https://github.com/loopbackio/loopback-next/compare/@loopback/testlab@5.0.7...@loopback/testlab@5.0.8) (2023-02-07)
17
36
 
18
37
  **Note:** Version bump only for package @loopback/testlab
@@ -13,6 +13,33 @@ permalink: /doc/en/lb4/changelog.tsdocs.html
13
13
  All notable changes to this project will be documented in this file.
14
14
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
15
15
 
16
+ ## [4.0.10](https://github.com/loopbackio/loopback-next/compare/@loopback/tsdocs@4.0.9...@loopback/tsdocs@4.0.10) (2023-04-13)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * refresh package lock files ([9979eb1](https://github.com/loopbackio/loopback-next/commit/9979eb183b6c6cd5775da7478cdede8a92ce0d5e)), closes [#9351](https://github.com/loopbackio/loopback-next/issues/9351)
22
+
23
+
24
+
25
+
26
+
27
+ ## [4.0.9](https://github.com/loopbackio/loopback-next/compare/@loopback/tsdocs@4.0.8...@loopback/tsdocs@4.0.9) (2023-03-09)
28
+
29
+ **Note:** Version bump only for package @loopback/tsdocs
30
+
31
+
32
+
33
+
34
+
35
+ ## [4.0.8](https://github.com/loopbackio/loopback-next/compare/@loopback/tsdocs@4.0.7...@loopback/tsdocs@4.0.8) (2023-02-07)
36
+
37
+ **Note:** Version bump only for package @loopback/tsdocs
38
+
39
+
40
+
41
+
42
+
16
43
  ## [4.0.7](https://github.com/loopbackio/loopback-next/compare/@loopback/tsdocs@4.0.6...@loopback/tsdocs@4.0.7) (2023-01-09)
17
44
 
18
45
  **Note:** Version bump only for package @loopback/tsdocs
@@ -0,0 +1,270 @@
1
+ # @loopback/sequelize
2
+
3
+ This is a loopback4 extension that provides Sequelize's query builder at
4
+ repository level in any loopback 4 application. It has zero learning curve as it
5
+ follows similar interface as `DefaultCrudRepository`. For relational databases,
6
+ Sequelize is a popular ORM of choice.
7
+
8
+ For pending features, refer to the [Limitations](#limitations) section below.
9
+
10
+ ## Stability: ⚠️Experimental⚠️
11
+
12
+ > Experimental packages provide early access to advanced or experimental
13
+ > functionality to get community feedback. Such modules are published to npm
14
+ > using `0.x.y` versions. Their APIs and functionality may be subject to
15
+ > breaking changes in future releases.
16
+
17
+ ## Installation
18
+
19
+ To install this extension in your Loopback 4 project, run the following command:
20
+
21
+ ```sh
22
+ npm install @loopback/sequelize
23
+ ```
24
+
25
+ You'll also need to install the driver for your preferred database:
26
+
27
+ ```sh
28
+ # One of the following:
29
+ npm install --save pg pg-hstore # Postgres
30
+ npm install --save mysql2
31
+ npm install --save mariadb
32
+ npm install --save sqlite3
33
+ npm install --save tedious # Microsoft SQL Server
34
+ npm install --save oracledb # Oracle Database
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ > You can watch a video overview of this extension by
40
+ > [clicking here](https://youtu.be/ZrUxIk63oRc).
41
+
42
+ <!-- tutorial-start -->
43
+
44
+ Both newly developed and existing projects can benefit from the extension by
45
+ simply changing the parent classes in the target Data Source and Repositories.
46
+
47
+ ### Step 1: Configure DataSource
48
+
49
+ Change the parent class from `juggler.DataSource` to `SequelizeDataSource` like
50
+ below.
51
+
52
+ ```ts title="pg.datasource.ts"
53
+ // ...
54
+ import {SequelizeDataSource} from '@loopback/sequelize';
55
+
56
+ // ...
57
+ export class PgDataSource
58
+ extends SequelizeDataSource
59
+ implements LifeCycleObserver {
60
+ // ...
61
+ }
62
+ ```
63
+
64
+ ### Step 2: Configure Repository
65
+
66
+ Change the parent class from `DefaultCrudRepository` to
67
+ `SequelizeCrudRepository` like below.
68
+
69
+ ```ts title="your.repository.ts"
70
+ // ...
71
+ import {SequelizeCrudRepository} from '@loopback/sequelize';
72
+
73
+ export class YourRepository extends SequelizeCrudRepository<
74
+ YourModel,
75
+ typeof YourModel.prototype.id,
76
+ YourModelRelations
77
+ > {
78
+ // ...
79
+ }
80
+ ```
81
+
82
+ ## Relations
83
+
84
+ ### Supported Loopback Relations
85
+
86
+ With `SequelizeCrudRepository`, you can utilize following relations without any
87
+ additional configuration:
88
+
89
+ 1. [HasMany Relation](https://loopback.io/doc/en/lb4/HasMany-relation.html)
90
+ 2. [BelongsTo Relation](https://loopback.io/doc/en/lb4/BelongsTo-relation.html)
91
+ 3. [HasOne Relation](https://loopback.io/doc/en/lb4/HasOne-relation.html)
92
+ 4. [HasManyThrough Relation](https://loopback.io/doc/en/lb4/HasManyThrough-relation.html)
93
+ 5. [ReferencesMany Relation](https://loopback.io/doc/en/lb4/ReferencesMany-relation.html)
94
+
95
+ The default relation configuration, generated using the
96
+ [lb4 relation](https://loopback.io/doc/en/lb4/Relation-generator.html) command
97
+ (i.e. inclusion resolvers in the repository and property decorators in the
98
+ model), remain unchanged.
99
+
100
+ ### INNER JOIN
101
+
102
+ > Check the demo video of using inner joins here:
103
+ > https://youtu.be/ZrUxIk63oRc?t=76
104
+
105
+ When using `SequelizeCrudRepository`, the `find()`, `findOne()`, and
106
+ `findById()` methods accept a new option called `required` in the include
107
+ filter. Setting this option to `true` will result in an inner join query that
108
+ explicitly requires the specified condition for the child model. If the row does
109
+ not meet this condition, it will not be fetched and returned.
110
+
111
+ An example of the filter object might look like this to fetch the books who
112
+ contains "Art" in their title, which belongs to category "Programming":
113
+
114
+ ```json
115
+ {
116
+ "where": {"title": {"like": "%Art%"}},
117
+ "include": [
118
+ {
119
+ "relation": "category",
120
+ "scope": {
121
+ "where": {
122
+ "name": "Programming"
123
+ }
124
+ },
125
+ "required": true // 👈
126
+ }
127
+ ]
128
+ }
129
+ ```
130
+
131
+ ## SQL Transactions
132
+
133
+ A Sequelize repository can perform operations in a transaction using the
134
+ `beginTransaction()` method.
135
+
136
+ ### Isolation levels
137
+
138
+ When you call `beginTransaction()`, you can optionally specify a transaction
139
+ isolation level. It support the following isolation levels:
140
+
141
+ - `Transaction.ISOLATION_LEVELS.READ_UNCOMMITTED` (default)
142
+ - `Transaction.ISOLATION_LEVELS.READ_COMMITTED`
143
+ - `Transaction.ISOLATION_LEVELS.REPEATABLE_READ`
144
+ - `Transaction.ISOLATION_LEVELS.SERIALIZABLE`
145
+
146
+ ### Options
147
+
148
+ Following are the supported options:
149
+
150
+ ```ts
151
+ {
152
+ autocommit?: boolean;
153
+ isolationLevel?: Transaction.ISOLATION_LEVELS;
154
+ type?: Transaction.TYPES;
155
+ deferrable?: string | Deferrable;
156
+ /**
157
+ * Parent transaction.
158
+ */
159
+ transaction?: Transaction | null;
160
+ }
161
+ ```
162
+
163
+ ### Example
164
+
165
+ ```ts
166
+ // Get repository instances. In a typical application, instances are injected
167
+ // via dependency injection using `@repository` decorator.
168
+ const userRepo = await app.getRepository(UserRepository);
169
+
170
+ // Begin a new transaction.
171
+ // It's also possible to call `userRepo.dataSource.beginTransaction` instead.
172
+ const tx = await userRepo.beginTransaction({
173
+ isolationLevel: Transaction.ISOLATION_LEVELS.SERIALIZABLE,
174
+ });
175
+
176
+ try {
177
+ // Then, we do some calls passing this transaction as an option:
178
+ const user = await userRepo.create(
179
+ {
180
+ firstName: 'Jon',
181
+ lastName: 'Doe',
182
+ },
183
+ {transaction: tx},
184
+ );
185
+
186
+ await userRepo.updateById(
187
+ user.id,
188
+ {
189
+ firstName: 'John',
190
+ },
191
+ {transaction: tx},
192
+ );
193
+
194
+ // If the execution reaches this line, no errors were thrown.
195
+ // We commit the transaction.
196
+ await tx.commit();
197
+ } catch (error) {
198
+ // If the execution reaches this line, an error was thrown.
199
+ // We rollback the transaction.
200
+ await tx.rollback();
201
+ }
202
+ ```
203
+
204
+ Switching from loopback defaults to sequelize transaction is as simple as
205
+ [this commit](https://github.com/shubhamp-sf/loopback4-sequelize-transaction-example/commit/321791c93ffd10c3af13e8b891396ae99b632a23)
206
+ in
207
+ [loopback4-sequelize-transaction-example](https://github.com/shubhamp-sf/loopback4-sequelize-transaction-example).
208
+
209
+ <!-- tutorial-end -->
210
+
211
+ ## Debug strings reference
212
+
213
+ There are three built-in debug strings available in this extension to aid in
214
+ debugging. To learn more about how to use them, see
215
+ [this page](https://loopback.io/doc/en/lb4/Setting-debug-strings.html).
216
+
217
+ <table>
218
+ <tbody>
219
+ <tr>
220
+ <th>String</th>
221
+ <th>Description</th>
222
+ </tr>
223
+ <tr>
224
+ <th colspan="2">Datasource</th>
225
+ </tr>
226
+ <tr>
227
+ <td>loopback:sequelize:datasource</td>
228
+ <td>Database Connections logs</td>
229
+ </tr>
230
+ <tr>
231
+ <td>loopback:sequelize:queries</td>
232
+ <td>Logs Executed SQL Queries and Parameters</td>
233
+ </tr>
234
+ <tr>
235
+ <th colspan="2">Repository</th>
236
+ </tr>
237
+ <tr>
238
+ <td>loopback:sequelize:modelbuilder</td>
239
+ <td>Logs Translation of Loopback Models Into Sequelize Supported Definitions. Helpful When Debugging Datatype Issues</td>
240
+ </tr>
241
+ </tbody>
242
+ </table>
243
+
244
+ ## Limitations
245
+
246
+ Please note, the current implementation does not support the following:
247
+
248
+ 1. Loopback Migrations (via default `migrate.ts`). Though you're good if using
249
+ external packages like
250
+ [`db-migrate`](https://www.npmjs.com/package/db-migrate).
251
+
252
+ Community contribution is welcome.
253
+
254
+ ## Contributions
255
+
256
+ - [Guidelines](https://github.com/loopbackio/loopback-next/blob/master/docs/CONTRIBUTING.md)
257
+ - [Join the team](https://github.com/loopbackio/loopback-next/issues/110)
258
+
259
+ ## Tests
260
+
261
+ Run `npm test` from the root folder.
262
+
263
+ ## Contributors
264
+
265
+ See
266
+ [all contributors](https://github.com/loopbackio/loopback-next/graphs/contributors).
267
+
268
+ ## License
269
+
270
+ [MIT](https://github.com/loopbackio/loopback-next/blob/master/LICENSE)