@mojaloop/central-ledger 9.2.2 → 15.1.3-snapshot.2

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 (256) hide show
  1. package/.circleci/config.yml +625 -204
  2. package/.env +3 -2
  3. package/.ncurc.yaml +9 -0
  4. package/.nvmrc +1 -1
  5. package/.versionrc +15 -0
  6. package/CHANGELOG.md +353 -0
  7. package/CODEOWNERS +31 -0
  8. package/Dockerfile +20 -14
  9. package/LICENSE.md +4 -4
  10. package/Onboarding.md +0 -7
  11. package/README.md +99 -22
  12. package/audit-resolve.json +136 -1
  13. package/config/default.json +82 -27
  14. package/docker/central-ledger/default.json +68 -21
  15. package/docker/ml-api-adapter/default.json +10 -1
  16. package/docker/wait-for/wait-for-objstore.sh +1 -6
  17. package/docker/wait-for/wait-for.env +1 -1
  18. package/docker-compose.integration.yml +8 -5
  19. package/docker-compose.yml +73 -16
  20. package/migrations/310203_transferParticipant-indexes.js +38 -0
  21. package/migrations/310503_participantLimit-indexes-composite.js +38 -0
  22. package/migrations/{400401_settlementWindowStateChange-indexes.js → 400401_settlmentWindowStateChange-indexes.js} +0 -0
  23. package/migrations/401301_settlementModel-indexes.js +2 -0
  24. package/migrations/500401_quote-hotfix-2719.js +58 -0
  25. package/migrations/500501_feature-fixSubIdRef.js +53 -0
  26. package/migrations/500601_party-2480.js +63 -0
  27. package/migrations/501001_quoteExtension-quote-service-174.js +46 -0
  28. package/migrations/501002_quoteExtension-2522.js +61 -0
  29. package/migrations/800101_feature-fixSubIdRef.js +90 -0
  30. package/migrations/910102_hotfix954.js +4 -1
  31. package/migrations/940100_quotePartyIdInfoExtension.js +52 -0
  32. package/migrations/940101_quotePartyIdInfoExtension-2522.js +64 -0
  33. package/migrations/950100_settlementContentAggregation-decimal184.js +40 -0
  34. package/migrations/950101_transferParticipantStateChange.js +46 -0
  35. package/migrations/950102_settlementModel-adjustPosition.js +42 -0
  36. package/migrations/950103_dropTransferParticipantStateChange.js +47 -0
  37. package/migrations/950104_settlementModel-settlementAccountTypeId.js +79 -0
  38. package/migrations/950106_unique_settlement_model_ledger_account_currency.js +38 -0
  39. package/migrations/950107_settlementWindowContent_foreign_settlementModel.js +60 -0
  40. package/package.json +99 -81
  41. package/scripts/_wait4_all.js +146 -0
  42. package/seeds/amountType.js +4 -6
  43. package/seeds/balanceOfPayments.js +4 -6
  44. package/seeds/bulkProcessingState.js +4 -6
  45. package/seeds/bulkTransferState.js +4 -6
  46. package/seeds/currency.js +4 -6
  47. package/seeds/endpointType.js +128 -7
  48. package/seeds/ledgerAccountType.js +11 -10
  49. package/seeds/ledgerEntryType.js +5 -7
  50. package/seeds/participant.js +4 -6
  51. package/seeds/participantLimitType.js +4 -6
  52. package/seeds/partyIdentifierType.js +4 -6
  53. package/seeds/partyType.js +4 -6
  54. package/seeds/settlementDelay.js +4 -6
  55. package/seeds/settlementGranularity.js +4 -6
  56. package/seeds/settlementInterchange.js +4 -6
  57. package/seeds/settlementState.js +4 -6
  58. package/seeds/settlementWindow1State.js +4 -6
  59. package/seeds/transactionInitiator.js +4 -6
  60. package/seeds/transactionInitiatorType.js +4 -6
  61. package/seeds/transactionScenario.js +4 -6
  62. package/seeds/transferParticipantRoleType.js +4 -6
  63. package/seeds/transferState.js +9 -6
  64. package/src/api/interface/swagger.json +728 -948
  65. package/src/api/ledgerAccountTypes/handler.js +55 -0
  66. package/src/api/ledgerAccountTypes/routes.js +63 -0
  67. package/src/api/metrics/handler.js +2 -2
  68. package/src/api/metrics/routes.js +1 -1
  69. package/src/api/participants/handler.js +43 -35
  70. package/src/api/participants/routes.js +13 -13
  71. package/src/api/root/routes.js +2 -2
  72. package/src/api/settlementModels/handler.js +9 -26
  73. package/src/api/settlementModels/routes.js +4 -4
  74. package/src/api/transactions/handler.js +46 -0
  75. package/src/api/transactions/routes.js +45 -0
  76. package/src/domain/bulkTransfer/index.js +6 -5
  77. package/src/domain/ledgerAccountTypes/index.js +58 -0
  78. package/src/domain/participant/index.js +55 -4
  79. package/src/domain/position/index.js +18 -2
  80. package/src/domain/settlement/index.js +39 -6
  81. package/src/domain/transactions/index.js +61 -0
  82. package/src/domain/transfer/index.js +22 -2
  83. package/src/domain/transfer/transform.js +3 -3
  84. package/src/handlers/admin/handler.js +24 -32
  85. package/src/handlers/bulk/fulfil/handler.js +89 -56
  86. package/src/handlers/bulk/get/handler.js +203 -0
  87. package/src/handlers/bulk/index.js +4 -1
  88. package/src/handlers/bulk/prepare/handler.js +30 -29
  89. package/src/handlers/bulk/processing/handler.js +61 -32
  90. package/src/handlers/bulk/shared/validator.js +13 -1
  91. package/src/handlers/index.js +18 -9
  92. package/src/handlers/positions/handler.js +67 -46
  93. package/src/handlers/register.js +7 -7
  94. package/src/handlers/timeouts/handler.js +9 -4
  95. package/src/handlers/transfers/handler.js +408 -182
  96. package/src/handlers/transfers/validator.js +41 -11
  97. package/src/lib/cache.js +8 -34
  98. package/src/lib/config.js +5 -7
  99. package/src/lib/enum.js +22 -22
  100. package/src/lib/enumCached.js +76 -0
  101. package/src/lib/healthCheck/subServiceHealth.js +2 -2
  102. package/src/lib/requestLogger.js +9 -9
  103. package/src/lib/urlParser.js +1 -1
  104. package/src/models/bulkTransfer/bulkTransfer.js +6 -6
  105. package/src/models/bulkTransfer/bulkTransferAssociation.js +3 -3
  106. package/src/models/bulkTransfer/bulkTransferDuplicateCheck.js +4 -4
  107. package/src/models/bulkTransfer/bulkTransferExtension.js +2 -2
  108. package/src/models/bulkTransfer/bulkTransferFulfilmentDuplicateCheck.js +4 -4
  109. package/src/models/bulkTransfer/bulkTransferStateChange.js +7 -7
  110. package/src/models/bulkTransfer/facade.js +54 -3
  111. package/src/models/bulkTransfer/individualTransfer.js +2 -2
  112. package/src/models/ilpPackets/ilpPacket.js +36 -0
  113. package/src/models/ledgerAccountType/ledgerAccountType.js +139 -3
  114. package/src/models/misc/migrationLock.js +1 -1
  115. package/src/models/misc/segment.js +1 -1
  116. package/src/models/participant/facade.js +226 -76
  117. package/src/models/participant/participant.js +6 -5
  118. package/src/models/participant/participantCached.js +8 -0
  119. package/src/models/participant/participantCurrency.js +7 -7
  120. package/src/models/participant/participantCurrencyCached.js +11 -1
  121. package/src/models/participant/participantLimit.js +13 -13
  122. package/src/models/participant/participantLimitCached.js +124 -0
  123. package/src/models/participant/participantPosition.js +34 -5
  124. package/src/models/participant/participantPositionChange.js +10 -2
  125. package/src/models/position/facade.js +112 -18
  126. package/src/models/position/participantPosition.js +6 -6
  127. package/src/models/settlement/settlementModel.js +92 -17
  128. package/src/models/settlement/settlementModelCached.js +139 -0
  129. package/src/models/transfer/facade.js +97 -32
  130. package/src/models/transfer/ilpPacket.js +4 -4
  131. package/src/models/transfer/transfer.js +7 -7
  132. package/src/models/transfer/transferDuplicateCheck.js +21 -5
  133. package/src/models/transfer/transferError.js +5 -5
  134. package/src/models/transfer/transferErrorDuplicateCheck.js +4 -4
  135. package/src/models/transfer/transferExtension.js +4 -4
  136. package/src/models/transfer/transferFulfilment.js +5 -5
  137. package/src/models/transfer/transferFulfilmentDuplicateCheck.js +4 -4
  138. package/src/models/transfer/transferParticipant.js +3 -3
  139. package/src/models/transfer/transferStateChange.js +11 -11
  140. package/src/models/transfer/transferTimeout.js +5 -5
  141. package/src/schema/bulkTransfer.js +4 -4
  142. package/src/shared/plugins.js +10 -9
  143. package/src/shared/setup.js +69 -46
  144. package/test/integration/domain/participant/index.test.js +2 -0
  145. package/test/integration/handlers/handlers.test.js +605 -166
  146. package/test/integration/handlers/root.test.js +1 -1
  147. package/test/integration/helpers/hubAccounts.js +62 -0
  148. package/test/integration/helpers/ilpPacket.js +1 -1
  149. package/test/integration/helpers/participantFundsInOut.js +80 -0
  150. package/test/integration/helpers/participantLimit.js +6 -1
  151. package/test/integration/helpers/settlementModels.js +88 -0
  152. package/test/integration/helpers/testConsumer.js +163 -0
  153. package/test/integration/helpers/testProducer.js +0 -1
  154. package/test/integration/helpers/transferDuplicateCheck.js +1 -1
  155. package/test/integration/helpers/transferStateChange.js +1 -1
  156. package/test/integration/helpers/transferTestHelper.js +3 -5
  157. package/test/integration/models/transfer/transferStateChange.test.js +6 -0
  158. package/test/unit/api/ledgerAccountTypes/handler.test.js +126 -0
  159. package/test/unit/api/ledgerAccountTypes/routes.test.js +52 -0
  160. package/test/unit/api/participants/handler.test.js +75 -33
  161. package/test/unit/api/root/handler.test.js +1 -1
  162. package/test/unit/api/root/routes.test.js +2 -2
  163. package/test/unit/api/settlementModels/handler.test.js +21 -57
  164. package/test/unit/api/transactions/handler.test.js +108 -0
  165. package/test/unit/api/transactions/routes.test.js +38 -0
  166. package/test/unit/domain/ledgerAccountTypes/index.test.js +197 -0
  167. package/test/unit/domain/participant/index.test.js +115 -2
  168. package/test/unit/domain/settlement/index.test.js +199 -29
  169. package/test/unit/domain/transactions/index.test.js +128 -0
  170. package/test/unit/domain/transfer/index.test.js +1 -0
  171. package/test/unit/domain/transfer/transform.test.js +2 -0
  172. package/test/unit/handlers/admin/handler.test.js +5 -5
  173. package/test/unit/handlers/bulk/get/handler.test.js +401 -0
  174. package/test/unit/handlers/index.test.js +6 -0
  175. package/test/unit/handlers/positions/handler.test.js +26 -0
  176. package/test/unit/handlers/register.test.js +2 -0
  177. package/test/unit/handlers/transfers/handler.test.js +491 -36
  178. package/test/unit/handlers/transfers/validator.test.js +31 -31
  179. package/test/unit/lib/cache.test.js +0 -64
  180. package/test/unit/lib/cachingOfEnums.test.js +121 -0
  181. package/test/unit/lib/config.test.js +34 -0
  182. package/test/unit/lib/enum.test.js +6 -1
  183. package/test/unit/lib/enumCached.test.js +82 -0
  184. package/test/unit/lib/healthCheck/subServiceHealth.test.js +2 -0
  185. package/test/unit/lib/requestLogger.test.js +14 -12
  186. package/test/unit/models/ilpPackets/ilpPacket.test.js +89 -0
  187. package/test/unit/models/ledgerAccountType/ledgerAccountType.test.js +255 -6
  188. package/test/unit/models/misc/migrationLock.test.js +4 -0
  189. package/test/unit/models/misc/segment.test.js +5 -0
  190. package/test/unit/models/participant/facade.test.js +493 -54
  191. package/test/unit/models/participant/participant.test.js +4 -0
  192. package/test/unit/models/participant/participantCurrency.test.js +22 -9
  193. package/test/unit/models/participant/participantCurrencyCached.test.js +1 -1
  194. package/test/unit/models/participant/participantLimit.test.js +97 -0
  195. package/test/unit/models/participant/participantLimitCached.test.js +232 -0
  196. package/test/unit/models/participant/participantPosition.test.js +217 -0
  197. package/test/unit/models/participant/participantPositionChange.test.js +3 -0
  198. package/test/unit/models/position/facade.test.js +318 -29
  199. package/test/unit/models/position/participantPosition.test.js +22 -7
  200. package/test/unit/models/settlement/settlementModel.test.js +18 -37
  201. package/test/unit/models/settlement/settlementModelCached.test.js +171 -0
  202. package/test/unit/models/transfer/facade.test.js +115 -0
  203. package/test/unit/models/transfer/ilpPacket.test.js +28 -11
  204. package/test/unit/models/transfer/transfer.test.js +13 -4
  205. package/test/unit/models/transfer/transferDuplicateCheck.test.js +4 -0
  206. package/test/unit/models/transfer/transferError.test.js +5 -1
  207. package/test/unit/models/transfer/transferErrorDuplicateCheck.test.js +4 -0
  208. package/test/unit/models/transfer/transferExtension.test.js +26 -9
  209. package/test/unit/models/transfer/transferFulfilment.test.js +14 -5
  210. package/test/unit/models/transfer/transferFulfilmentDuplicateCheck.test.js +4 -0
  211. package/test/unit/models/transfer/transferParticipant.test.js +14 -5
  212. package/test/unit/models/transfer/transferStateChange.test.js +3 -0
  213. package/test/unit/models/transfer/transferTimeout.test.js +6 -0
  214. package/test/unit/seeds/amountType.test.js +6 -22
  215. package/test/unit/seeds/balanceOfPayments.test.js +6 -22
  216. package/test/unit/seeds/bulkProcessingState.test.js +84 -0
  217. package/test/unit/{lib/sidecar/nullClient.test.js → seeds/bulkTransferState.test.js} +36 -39
  218. package/test/unit/seeds/currency.test.js +6 -22
  219. package/test/unit/seeds/endpointType.test.js +6 -22
  220. package/test/unit/seeds/ledgerAccountType.test.js +5 -22
  221. package/test/unit/seeds/ledgerEntryType.test.js +6 -22
  222. package/test/unit/seeds/participant.test.js +5 -22
  223. package/test/unit/seeds/participantLimitType.test.js +6 -22
  224. package/test/unit/seeds/partyIdentifierType.test.js +6 -22
  225. package/test/unit/seeds/partyType.test.js +6 -22
  226. package/test/unit/seeds/settlementState.test.js +5 -22
  227. package/test/unit/seeds/settlementWindow1State.test.js +5 -22
  228. package/test/unit/seeds/transactionInitiator.test.js +6 -22
  229. package/test/unit/seeds/transactionInitiatorType.test.js +6 -22
  230. package/test/unit/seeds/transactionScenario.test.js +6 -22
  231. package/test/unit/seeds/transferParticipantRoleType.test.js +6 -22
  232. package/test/unit/seeds/transferState.test.js +6 -22
  233. package/test/unit/shared/plugins.test.js +31 -1
  234. package/test/unit/shared/setup.test.js +25 -36
  235. package/test/util/helpers.js +37 -2
  236. package/test/util/randomTransfers.js +1 -1
  237. package/test/util/scripts/env.sh +6 -5
  238. package/test/util/scripts/populateTestData.sh +204 -181
  239. package/test/util/scripts/populateTestDataForLegacySimulator.sh +261 -0
  240. package/test/util/scripts/restartObjStore.sh +1 -1
  241. package/test-integration.Dockerfile +15 -15
  242. package/test.Dockerfile +12 -12
  243. package/.circleci/_set_up_deploy_envs.sh +0 -47
  244. package/.dockerignore +0 -17
  245. package/.ncurc.json +0 -3
  246. package/server.sh +0 -4
  247. package/sonar-project.properties +0 -17
  248. package/src/lib/sidecar/index.js +0 -47
  249. package/src/lib/sidecar/nullClient.js +0 -18
  250. package/test/.env +0 -8
  251. package/test/integration-config.json +0 -367
  252. package/test/integration-runner.env +0 -31
  253. package/test/integration-runner.sh +0 -264
  254. package/test/spec-runner.sh +0 -132
  255. package/test/unit/lib/sidecar/index.test.js +0 -148
  256. package/test/unit/models/position/participantLimit.test.js +0 -135
@@ -44,9 +44,9 @@ const ErrorHandler = require('@mojaloop/central-services-error-handling')
44
44
  */
45
45
 
46
46
  const getBulkTransferFulfilmentDuplicateCheck = async (bulkTransferId) => {
47
- Logger.debug(`get BulkTransferFulfilmentDuplicateCheck (bulkTransferId=${bulkTransferId})`)
47
+ Logger.isDebugEnabled && Logger.debug(`get BulkTransferFulfilmentDuplicateCheck (bulkTransferId=${bulkTransferId})`)
48
48
  try {
49
- return Db.bulkTransferFulfilmentDuplicateCheck.findOne({ bulkTransferId })
49
+ return Db.from('bulkTransferFulfilmentDuplicateCheck').findOne({ bulkTransferId })
50
50
  } catch (err) {
51
51
  throw new Error(err.message)
52
52
  }
@@ -65,9 +65,9 @@ const getBulkTransferFulfilmentDuplicateCheck = async (bulkTransferId) => {
65
65
  */
66
66
 
67
67
  const saveBulkTransferFulfilmentDuplicateCheck = async (bulkTransferId, hash) => {
68
- Logger.debug(`save BulkTransferFulfilmentDuplicateCheck (bulkTransferId=${bulkTransferId}, hash=${hash})`)
68
+ Logger.isDebugEnabled && Logger.debug(`save BulkTransferFulfilmentDuplicateCheck (bulkTransferId=${bulkTransferId}, hash=${hash})`)
69
69
  try {
70
- return Db.bulkTransferFulfilmentDuplicateCheck.insert({ bulkTransferId, hash })
70
+ return Db.from('bulkTransferFulfilmentDuplicateCheck').insert({ bulkTransferId, hash })
71
71
  } catch (err) {
72
72
  throw ErrorHandler.Factory.reformatFSPIOPError(err)
73
73
  }
@@ -27,18 +27,18 @@ const Db = require('../../lib/db')
27
27
  const Logger = require('@mojaloop/central-services-logger')
28
28
 
29
29
  const create = async (stateChange) => {
30
- Logger.debug('save bulkTransferStateChange' + stateChange.toString())
30
+ Logger.isDebugEnabled && Logger.debug('save bulkTransferStateChange' + stateChange.toString())
31
31
  try {
32
- return await Db.bulkTransferStateChange.insert(stateChange)
32
+ return await Db.from('bulkTransferStateChange').insert(stateChange)
33
33
  } catch (err) {
34
- Logger.error(err)
34
+ Logger.isErrorEnabled && Logger.error(err)
35
35
  throw err
36
36
  }
37
37
  }
38
38
 
39
39
  const getByBulkTransferId = async (id) => {
40
40
  try {
41
- return await Db.bulkTransferStateChange.query(async (builder) => {
41
+ return await Db.from('bulkTransferStateChange').query(async (builder) => {
42
42
  const result = builder
43
43
  .where({ 'bulkTransferStateChange.bulkTransferId': id })
44
44
  .select('bulkTransferStateChange.*')
@@ -47,14 +47,14 @@ const getByBulkTransferId = async (id) => {
47
47
  return result
48
48
  })
49
49
  } catch (err) {
50
- Logger.error(err)
50
+ Logger.isErrorEnabled && Logger.error(err)
51
51
  throw err
52
52
  }
53
53
  }
54
54
 
55
55
  const getByTransferId = async (id) => {
56
56
  try {
57
- return await Db.bulkTransferStateChange.query(async (builder) => {
57
+ return await Db.from('bulkTransferStateChange').query(async (builder) => {
58
58
  const result = builder
59
59
  .innerJoin('bulkTransferAssociation AS bta', 'bta.bulkTransferId', 'bulkTransferStateChange.bulkTransferId')
60
60
  .where({ 'bta.transferId': id })
@@ -64,7 +64,7 @@ const getByTransferId = async (id) => {
64
64
  return result
65
65
  })
66
66
  } catch (err) {
67
- Logger.error(err)
67
+ Logger.isErrorEnabled && Logger.error(err)
68
68
  throw err
69
69
  }
70
70
  }
@@ -72,7 +72,7 @@ const saveBulkTransferReceived = async (payload, participants, stateReason = nul
72
72
  }
73
73
  })
74
74
  } catch (err) {
75
- Logger.error(err)
75
+ Logger.isErrorEnabled && Logger.error(err)
76
76
  throw err
77
77
  }
78
78
  }
@@ -117,14 +117,65 @@ const saveBulkTransferProcessing = async (payload, stateReason = null, isValid =
117
117
  }
118
118
  })
119
119
  } catch (err) {
120
- Logger.error(err)
120
+ Logger.isErrorEnabled && Logger.error(err)
121
+ throw err
122
+ }
123
+ }
124
+
125
+ const saveBulkTransferErrorProcessing = async (payload, stateReason = null, isValid = true) => {
126
+ try {
127
+ const bulkTransferFulfilmentRecord = {
128
+ bulkTransferId: payload.bulkTransferId,
129
+ completedDate: Time.getUTCString(new Date())
130
+ }
131
+
132
+ const state = (isValid ? Enum.Transfers.BulkTransferState.PROCESSING : Enum.Transfers.BulkTransferState.INVALID)
133
+ const bulkTransferStateChangeRecord = {
134
+ bulkTransferId: payload.bulkTransferId,
135
+ bulkTransferStateId: state,
136
+ reason: stateReason
137
+ }
138
+
139
+ const knex = await Db.getKnex()
140
+ return await knex.transaction(async (trx) => {
141
+ try {
142
+ await knex('bulkTransferFulfilment').transacting(trx).insert(bulkTransferFulfilmentRecord)
143
+ if (payload.errorInformation.extensionList && payload.errorInformation.extensionList.extension) {
144
+ const bulkTransferExtensionsRecordList = payload.errorInformation.extensionList.extension.map(ext => {
145
+ return {
146
+ bulkTransferId: payload.bulkTransferId,
147
+ isFulfilment: true,
148
+ key: ext.key,
149
+ value: ext.value
150
+ }
151
+ })
152
+ await knex.batchInsert('bulkTransferExtension', bulkTransferExtensionsRecordList).transacting(trx)
153
+ }
154
+ const returnedInsertIds = await knex('bulkTransferStateChange').transacting(trx).insert(bulkTransferStateChangeRecord).returning('bulkTransferStateChangeId')
155
+ const bulkTransferStateChangeId = returnedInsertIds[0]
156
+ const bulkTransferErrorRecord = {
157
+ bulkTransferStateChangeId,
158
+ errorCode: payload.errorInformation.errorCode,
159
+ errorDescription: payload.errorInformation.errorDescription
160
+ }
161
+ await knex('bulkTransferError').transacting(trx).insert(bulkTransferErrorRecord)
162
+ await trx.commit
163
+ return state
164
+ } catch (err) {
165
+ await trx.rollback
166
+ throw err
167
+ }
168
+ })
169
+ } catch (err) {
170
+ Logger.isErrorEnabled && Logger.error(err)
121
171
  throw err
122
172
  }
123
173
  }
124
174
 
125
175
  const TransferFacade = {
126
176
  saveBulkTransferReceived,
127
- saveBulkTransferProcessing
177
+ saveBulkTransferProcessing,
178
+ saveBulkTransferErrorProcessing
128
179
  }
129
180
 
130
181
  module.exports = TransferFacade
@@ -29,7 +29,7 @@ const Logger = require('@mojaloop/central-services-logger')
29
29
  const getAllById = async (id) => {
30
30
  try {
31
31
  const knex = await Db.getKnex()
32
- return await Db.bulkTransferAssociation.query(async (builder) => {
32
+ return await Db.from('bulkTransferAssociation').query(async (builder) => {
33
33
  const result = builder
34
34
  .innerJoin('transfer AS t', 't.transferId', 'bulkTransferAssociation.transferId')
35
35
  .innerJoin('ilpPacket AS ip', 'ip.transferId', 't.transferId')
@@ -54,7 +54,7 @@ const getAllById = async (id) => {
54
54
  return result
55
55
  })
56
56
  } catch (err) {
57
- Logger.error(err)
57
+ Logger.isErrorEnabled && Logger.error(err)
58
58
  throw err
59
59
  }
60
60
  }
@@ -0,0 +1,36 @@
1
+ /*****
2
+ License
3
+ --------------
4
+ Copyright © 2017 Bill & Melinda Gates Foundation
5
+ The Mojaloop files are made available by the Bill & Melinda Gates Foundation under the Apache License, Version 2.0 (the "License") and you may not use these files except in compliance with the License. You may obtain a copy of the License at
6
+ http://www.apache.org/licenses/LICENSE-2.0
7
+ Unless required by applicable law or agreed to in writing, the Mojaloop files are distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
8
+ Contributors
9
+ --------------
10
+ This is the official list of the Mojaloop project contributors for this file.
11
+ Names of the original copyright holders (individuals or organizations)
12
+ should be listed with a '*' in the first column. People who have
13
+ contributed from an organization can be listed under the organization
14
+ that actually holds the copyright for their contributions (see the
15
+ Gates Foundation organization for an example). Those individuals should have
16
+ their names indented and be marked with a '-'. Email address can be added
17
+ optionally within square brackets <email>.
18
+ * Gates Foundation
19
+ - Name Surname <name.surname@gatesfoundation.com>
20
+
21
+ * ModusBox
22
+ - Lazola Lucas <lazola.lucas@modusbox.com>
23
+ --------------
24
+ ******/
25
+ 'use strict'
26
+
27
+ const Db = require('../../lib/db')
28
+ const ErrorHandler = require('@mojaloop/central-services-error-handling')
29
+
30
+ exports.getById = async (id) => {
31
+ try {
32
+ return await Db.from('ilpPacket').find({ transferId: id })
33
+ } catch (err) {
34
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
35
+ }
36
+ }
@@ -18,21 +18,157 @@
18
18
  * Gates Foundation
19
19
  - Name Surname <name.surname@gatesfoundation.com>
20
20
 
21
+ * ModusBox
21
22
  * Georgi Georgiev <georgi.georgiev@modusbox.com>
22
23
  * Valentin Genev <valentin.genev@modusbox.com>
23
24
  * Rajiv Mothilal <rajiv.mothilal@modusbox.com>
24
25
  * Miguel de Barros <miguel.debarros@modusbox.com>
26
+ * Claudio Viola <claudio.viola@modusbox.com>
25
27
  --------------
26
28
  ******/
27
-
28
29
  'use strict'
29
30
 
30
31
  const Db = require('../../lib/db')
31
32
  const ErrorHandler = require('@mojaloop/central-services-error-handling')
32
33
 
33
- exports.getLedgerAccountByName = async (name) => {
34
+ /* istanbul ignore next */
35
+ exports.getLedgerAccountByName = async (name, trx = null) => {
36
+ try {
37
+ const knex = Db.getKnex()
38
+ const trxFunction = async (trx, doCommit = true) => {
39
+ try {
40
+ const ledgerAccountType = await knex('ledgerAccountType')
41
+ .select()
42
+ .where('name', name)
43
+ .transacting(trx)
44
+ if (doCommit) {
45
+ await trx.commit
46
+ }
47
+ return ledgerAccountType.length > 0 ? ledgerAccountType[0] : null
48
+ } catch (err) {
49
+ if (doCommit) {
50
+ await trx.rollback
51
+ }
52
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
53
+ }
54
+ }
55
+ if (trx) {
56
+ return trxFunction(trx, false)
57
+ } else {
58
+ return knex.transaction(trxFunction)
59
+ }
60
+ } catch (err) {
61
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
62
+ }
63
+ }
64
+
65
+ /* istanbul ignore next */
66
+ exports.getLedgerAccountsByName = async (names, trx = null) => {
67
+ try {
68
+ const knex = Db.getKnex()
69
+ const trxFunction = async (trx, doCommit = true) => {
70
+ try {
71
+ const ledgerAccountTypes = await knex('ledgerAccountType')
72
+ .select('name')
73
+ .whereIn('name', names)
74
+ .transacting(trx)
75
+ if (doCommit) {
76
+ await trx.commit
77
+ }
78
+ return ledgerAccountTypes
79
+ } catch (err) {
80
+ if (doCommit) {
81
+ await trx.rollback
82
+ }
83
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
84
+ }
85
+ }
86
+ if (trx) {
87
+ return trxFunction(trx, false)
88
+ } else {
89
+ return knex.transaction(trxFunction)
90
+ }
91
+ } catch (err) {
92
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
93
+ }
94
+ }
95
+
96
+ /* istanbul ignore next */
97
+ exports.bulkInsert = async (records, trx = null) => {
98
+ try {
99
+ const knex = Db.getKnex()
100
+ const trxFunction = async (trx, doCommit = true) => {
101
+ try {
102
+ await knex('ledgerAccountType')
103
+ .insert(records)
104
+ .transacting(trx)
105
+ const recordsNames = records.map(record => record.name)
106
+ const createdIds = await knex.select('ledgerAccountTypeId')
107
+ .from('ledgerAccountType')
108
+ .whereIn('name', recordsNames)
109
+ .transacting(trx)
110
+ if (doCommit) {
111
+ await trx.commit
112
+ }
113
+ return createdIds.map(record => record.ledgerAccountTypeId)
114
+ } catch (err) {
115
+ if (doCommit) {
116
+ await trx.rollback
117
+ }
118
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
119
+ }
120
+ }
121
+ if (trx) {
122
+ return trxFunction(trx, false)
123
+ } else {
124
+ return knex.transaction(trxFunction)
125
+ }
126
+ } catch (err) {
127
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
128
+ }
129
+ }
130
+
131
+ exports.create = async (name, description, isActive, isSettleable, trx = null) => {
132
+ try {
133
+ const knex = Db.getKnex()
134
+ const trxFunction = async (trx, doCommit = true) => {
135
+ try {
136
+ await knex('ledgerAccountType')
137
+ .insert({
138
+ name,
139
+ description,
140
+ isActive,
141
+ isSettleable
142
+ })
143
+ .transacting(trx)
144
+ const createdId = await knex.select('ledgerAccountTypeId')
145
+ .from('ledgerAccountType')
146
+ .where('name', name)
147
+ .transacting(trx)
148
+ if (doCommit) {
149
+ await trx.commit
150
+ }
151
+ return createdId[0].ledgerAccountTypeId
152
+ } catch (err) {
153
+ if (doCommit) {
154
+ await trx.rollback()
155
+ }
156
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
157
+ }
158
+ }
159
+ if (trx) {
160
+ return trxFunction(trx, false)
161
+ } else {
162
+ return knex.transaction(trxFunction)
163
+ }
164
+ } catch (err) {
165
+ throw ErrorHandler.Factory.reformatFSPIOPError(err)
166
+ }
167
+ }
168
+
169
+ exports.getAll = async () => {
34
170
  try {
35
- return await Db.ledgerAccountType.findOne({ name })
171
+ return await Db.from('ledgerAccountType').find({ })
36
172
  } catch (err) {
37
173
  throw ErrorHandler.Factory.reformatFSPIOPError(err)
38
174
  }
@@ -33,7 +33,7 @@ const Db = require('../../lib/db')
33
33
  * @returns {Promise<boolean>} - true if locked, false if not. Rejects if an error occours
34
34
  */
35
35
  const getIsMigrationLocked = async () => {
36
- const result = await Db.migration_lock.query(async builder => {
36
+ const result = await Db.from('migration_lock').query(async builder => {
37
37
  builder.select('is_locked AS isLocked')
38
38
  .orderBy('index', 'desc')
39
39
  .first()
@@ -30,7 +30,7 @@ const ErrorHandler = require('@mojaloop/central-services-error-handling')
30
30
 
31
31
  const getByParams = async (params) => {
32
32
  try {
33
- return await Db.segment.findOne(params)
33
+ return await Db.from('segment').findOne(params)
34
34
  } catch (err) {
35
35
  throw ErrorHandler.Factory.reformatFSPIOPError(err)
36
36
  }