diff --git a/packages/framework-core/src/booster-data-migrations.ts b/packages/framework-core/src/booster-data-migrations.ts index def6ac692e..8ece045048 100644 --- a/packages/framework-core/src/booster-data-migrations.ts +++ b/packages/framework-core/src/booster-data-migrations.ts @@ -33,7 +33,7 @@ export class BoosterDataMigrations { const sortedConfiguredMigrations = BoosterDataMigrations.sortConfiguredMigrations(configuredMigrations) const eventStore = new EventStore(config) for (const configuredMigration of Object.values(sortedConfiguredMigrations)) { - const migrationEntityForConfiguredMigration = await eventStore.fetchEntitySnapshot( + const migrationEntityForConfiguredMigration = await eventStore.fetchAndCacheEntitySnapshot( BoosterDataMigrationEntity.name, configuredMigration.class.name ) diff --git a/packages/framework-core/src/booster-event-processor.ts b/packages/framework-core/src/booster-event-processor.ts index 17ea9ef5e1..c449975142 100644 --- a/packages/framework-core/src/booster-event-processor.ts +++ b/packages/framework-core/src/booster-event-processor.ts @@ -76,7 +76,7 @@ export class BoosterEventProcessor { const logger = getLogger(config, 'BoosterEventDispatcher#snapshotAndUpdateReadModels') let entitySnapshot = undefined try { - entitySnapshot = await eventStore.fetchEntitySnapshot(entityName, entityID) + entitySnapshot = await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) } catch (e) { logger.error('Error while fetching or reducing entity snapshot:', e) } diff --git a/packages/framework-core/src/booster.ts b/packages/framework-core/src/booster.ts index eec3dc0b4c..59463649ae 100644 --- a/packages/framework-core/src/booster.ts +++ b/packages/framework-core/src/booster.ts @@ -133,7 +133,7 @@ export class Booster { entityID: UUID ): Promise { const eventStore = new EventStore(this.config) - const entitySnapshotEnvelope = await eventStore.fetchEntitySnapshot(entityClass.name, entityID) + const entitySnapshotEnvelope = await eventStore.fetchAndCacheEntitySnapshot(entityClass.name, entityID) return entitySnapshotEnvelope ? createInstance(entityClass, entitySnapshotEnvelope.value) : undefined } diff --git a/packages/framework-core/src/services/event-store.ts b/packages/framework-core/src/services/event-store.ts index 3272426b62..af80bf7efe 100644 --- a/packages/framework-core/src/services/event-store.ts +++ b/packages/framework-core/src/services/event-store.ts @@ -40,8 +40,8 @@ export class EventStore { * snapshot storing it at the end of the process. */ @Trace(TraceActionTypes.FETCH_ENTITY_SNAPSHOT) - public async fetchEntitySnapshot(entityName: string, entityID: UUID): Promise { - const logger = getLogger(this.config, 'EventStore#fetchEntitySnapshot') + public async fetchAndCacheEntitySnapshot(entityName: string, entityID: UUID): Promise { + const logger = getLogger(this.config, 'EventStore#fetchAndCacheEntitySnapshot') logger.debug(`Fetching snapshot for entity ${entityName} with ID ${entityID}`) const latestSnapshotEnvelope = await this.loadLatestSnapshot(entityName, entityID) diff --git a/packages/framework-core/test/booster-event-processor.test.ts b/packages/framework-core/test/booster-event-processor.test.ts index 083b9bdfbb..74a3153dc3 100644 --- a/packages/framework-core/test/booster-event-processor.test.ts +++ b/packages/framework-core/test/booster-event-processor.test.ts @@ -173,7 +173,7 @@ describe('BoosterEventProcessor', () => { const boosterEventProcessor = BoosterEventProcessor as any const eventStore = createStubInstance(EventStore) const readModelStore = createStubInstance(ReadModelStore) - eventStore.fetchEntitySnapshot = fake.resolves({}) as any + eventStore.fetchAndCacheEntitySnapshot = fake.resolves({}) as any await boosterEventProcessor.snapshotAndUpdateReadModels( config, @@ -183,14 +183,14 @@ describe('BoosterEventProcessor', () => { readModelStore ) - expect(eventStore.fetchEntitySnapshot).to.have.been.called - expect(eventStore.fetchEntitySnapshot).to.have.been.calledOnceWith(someEvent.entityTypeName, someEvent.entityID) + expect(eventStore.fetchAndCacheEntitySnapshot).to.have.been.called + expect(eventStore.fetchAndCacheEntitySnapshot).to.have.been.calledOnceWith(someEvent.entityTypeName, someEvent.entityID) }) it('projects the entity state to the corresponding read models', async () => { const boosterEventProcessor = BoosterEventProcessor as any const eventStore = createStubInstance(EventStore) - eventStore.fetchEntitySnapshot = fake.resolves(someEntitySnapshot) as any + eventStore.fetchAndCacheEntitySnapshot = fake.resolves(someEntitySnapshot) as any const readModelStore = createStubInstance(ReadModelStore) @@ -211,7 +211,7 @@ describe('BoosterEventProcessor', () => { const eventStore = createStubInstance(EventStore) const readModelStore = createStubInstance(ReadModelStore) const error = new Error('some error') - eventStore.fetchEntitySnapshot = fake.rejects(error) as any + eventStore.fetchAndCacheEntitySnapshot = fake.rejects(error) as any await expect( boosterEventProcessor.snapshotAndUpdateReadModels( diff --git a/packages/framework-core/test/booster.test.ts b/packages/framework-core/test/booster.test.ts index fcd6de1535..181d8df199 100644 --- a/packages/framework-core/test/booster.test.ts +++ b/packages/framework-core/test/booster.test.ts @@ -325,8 +325,8 @@ describe('the `Booster` class', () => { const config = new BoosterConfig('test') config.provider = {} as ProviderLibrary - it('the `entity` function calls to the `fetchEntitySnapshot` method in the EventStore', async () => { - replace(EventStore.prototype, 'fetchEntitySnapshot', fake.returns({ value: { id: '42' } })) + it('the `entity` function calls to the `fetchAndCacheEntitySnapshot` method in the EventStore', async () => { + replace(EventStore.prototype, 'fetchAndCacheEntitySnapshot', fake.returns({ value: { id: '42' } })) class SomeEntity { public constructor(readonly id: UUID) {} @@ -334,11 +334,11 @@ describe('the `Booster` class', () => { const snapshot = await Booster.entity(SomeEntity, '42') expect(snapshot).to.be.deep.equal({ id: '42' }) - expect(EventStore.prototype.fetchEntitySnapshot).to.have.been.calledOnceWith('SomeEntity', '42') + expect(EventStore.prototype.fetchAndCacheEntitySnapshot).to.have.been.calledOnceWith('SomeEntity', '42') }) it('the entity function has an instance method', async () => { - replace(EventStore.prototype, 'fetchEntitySnapshot', fake.returns({ id: '42' })) + replace(EventStore.prototype, 'fetchAndCacheEntitySnapshot', fake.returns({ id: '42' })) class SomeEntity { public constructor(readonly id: UUID) {} diff --git a/packages/framework-core/test/services/event-store.test.ts b/packages/framework-core/test/services/event-store.test.ts index ed2a6ec44c..dd6ab0681c 100644 --- a/packages/framework-core/test/services/event-store.test.ts +++ b/packages/framework-core/test/services/event-store.test.ts @@ -150,7 +150,7 @@ describe('EventStore', () => { } describe('public methods', () => { - describe('fetchEntitySnapshot', () => { + describe('fetchAndCacheEntitySnapshot', () => { it('properly binds `this` to the entityReducer', async () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const eventStore = new EventStore(config) as any @@ -166,7 +166,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - await expect(eventStore.fetchEntitySnapshot(entityName, entityID)).to.be.eventually.fulfilled + await expect(eventStore.fetchAndCacheEntitySnapshot(entityName, entityID)).to.be.eventually.fulfilled }) context('when there is a snapshot but no pending events', () => { @@ -182,7 +182,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - const entity = await eventStore.fetchEntitySnapshot(entityName, entityID) + const entity = await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) expect(eventStore.loadEventStreamSince).to.have.been.calledOnceWith( @@ -237,7 +237,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - const entity = await eventStore.fetchEntitySnapshot(entityName, entityID) + const entity = await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) expect(eventStore.loadEventStreamSince).to.have.been.calledOnceWith( @@ -314,7 +314,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - const entity = await eventStore.fetchEntitySnapshot(entityName, entityID) + const entity = await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) expect(eventStore.loadEventStreamSince).to.have.been.calledOnceWith( @@ -381,7 +381,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - const entity = await eventStore.fetchEntitySnapshot(entityName, entityID) + const entity = await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) expect(eventStore.loadEventStreamSince).to.have.been.calledOnceWith(entityName, entityID, originOfTime) @@ -412,7 +412,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - const entity = await eventStore.fetchEntitySnapshot(entityName, entityID) + const entity = await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) expect(eventStore.loadEventStreamSince).to.have.been.calledOnceWith(entityName, entityID, originOfTime) @@ -474,7 +474,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - await eventStore.fetchEntitySnapshot(entityName, entityID) + await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) @@ -555,7 +555,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - await expect(eventStore.fetchEntitySnapshot(entityName, entityID)).to.eventually.be.rejectedWith( + await expect(eventStore.fetchAndCacheEntitySnapshot(entityName, entityID)).to.eventually.be.rejectedWith( 'Error on reducer' ) @@ -622,7 +622,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - const entity = await eventStore.fetchEntitySnapshot(entityName, entityID) + const entity = await eventStore.fetchAndCacheEntitySnapshot(entityName, entityID) expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) @@ -691,7 +691,7 @@ describe('EventStore', () => { const entityName = AnEntity.name const entityID = '42' - await expect(eventStore.fetchEntitySnapshot(entityName, entityID)).to.eventually.be.fulfilled + await expect(eventStore.fetchAndCacheEntitySnapshot(entityName, entityID)).to.eventually.be.fulfilled expect(eventStore.loadLatestSnapshot).to.have.been.calledOnceWith(entityName, entityID) expect(eventStore.loadEventStreamSince).to.have.been.calledOnceWith(entityName, entityID, originOfTime) diff --git a/website/docs/11_frequently-asked-questions.md b/website/docs/11_frequently-asked-questions.md index c3f11228c7..1e1b923a3b 100644 --- a/website/docs/11_frequently-asked-questions.md +++ b/website/docs/11_frequently-asked-questions.md @@ -6,6 +6,6 @@ When you deploy a Booster application to AWS, an S3 bucket needs to be created t The solution is to **change your application name in the configuration file so that the bucket name is unique.** - **2.- I tried following the video guide but the function `Booster.fetchEntitySnapshot` is not found in BoostApp.** + **2.- I tried following the video guide but the function `Booster.fetchAndCacheEntitySnapshot` is not found in BoostApp.** - The function `Booster.fetchEntitySnapshot` was renamed to `Booster.entity`, so please replace it when following old tutorials. + The function `Booster.fetchAndCacheEntitySnapshot` was renamed to `Booster.entity`, so please replace it when following old tutorials.