Skip to content

Commit 77422b9

Browse files
committed
Merge pull request #1237 from boostercloud/integration/1173
2 parents dca595c + a521837 commit 77422b9

File tree

4 files changed

+214
-54
lines changed

4 files changed

+214
-54
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "Migrate on ReadModel Find and Search",
5+
"type": "minor",
6+
"packageName": "@boostercloud/framework-core"
7+
}
8+
],
9+
"packageName": "@boostercloud/framework-core",
10+
"email": "[email protected]"
11+
}

common/config/rush/pnpm-lock.yaml

Lines changed: 43 additions & 43 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/framework-core/src/booster-read-models-reader.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
import { getLogger } from '@boostercloud/framework-common-helpers'
1414
import { Booster } from './booster'
1515
import { applyReadModelRequestBeforeFunctions } from './services/filter-helpers'
16+
import { ReadModelSchemaMigrator } from './read-model-schema-migrator'
1617

1718
export class BoosterReadModelsReader {
1819
public constructor(readonly config: BoosterConfig) {}
@@ -33,7 +34,16 @@ export class BoosterReadModelsReader {
3334
if (!key) {
3435
throw 'Tried to run a findById operation without providing a key. An ID is required to perform this operation.'
3536
}
36-
return Booster.readModel(readModelMetadata.class).findById(key.id, key.sequenceKey)
37+
const currentReadModel = await Booster.readModel(readModelMetadata.class).findById(key.id, key.sequenceKey)
38+
if (currentReadModel) {
39+
const readModelName = readModelMetadata.class.name
40+
const readModelSchemaMigrator = new ReadModelSchemaMigrator(this.config)
41+
if (Array.isArray(currentReadModel)) {
42+
return [await readModelSchemaMigrator.migrate(<ReadModelInterface>currentReadModel[0], readModelName)]
43+
}
44+
return readModelSchemaMigrator.migrate(<ReadModelInterface>currentReadModel, readModelName)
45+
}
46+
return currentReadModel
3747
}
3848

3949
public async search(
@@ -48,13 +58,23 @@ export class BoosterReadModelsReader {
4858
readModelRequest.currentUser
4959
)
5060

51-
return Booster.readModel(readModelMetadata.class)
61+
const readModelName = readModelMetadata.class.name
62+
const readModels = await Booster.readModel(readModelMetadata.class)
5263
.filter(readModelTransformedRequest.filters)
5364
.sortBy(readModelTransformedRequest.sortBy)
5465
.limit(readModelTransformedRequest.limit)
5566
.afterCursor(readModelTransformedRequest.afterCursor)
5667
.paginatedVersion(readModelTransformedRequest.paginatedVersion)
5768
.search()
69+
70+
const readModelSchemaMigrator = new ReadModelSchemaMigrator(this.config)
71+
if (Array.isArray(readModels)) {
72+
return Promise.all(readModels.map((readModel) => readModelSchemaMigrator.migrate(readModel, readModelName)))
73+
}
74+
readModels.items = await Promise.all(
75+
readModels.items.map((readModel) => readModelSchemaMigrator.migrate(readModel, readModelName))
76+
)
77+
return readModels
5878
}
5979

6080
public async subscribe(

0 commit comments

Comments
 (0)