From 253efc3950637bd7aece5a174a4f8c949f7cfbcf Mon Sep 17 00:00:00 2001 From: Jacek Tomaszewski Date: Wed, 3 Dec 2025 01:17:48 +0100 Subject: [PATCH] fix!: rename delivedToListeners to deliveredToListeners MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix typo in field name throughout codebase and add database migrations to rename the column from delived_to_listeners to delivered_to_listeners. BREAKING CHANGE: Existing databases require running the new migration to rename the column. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../inbox-outbox-transport-event.interface.ts | 2 +- .../retryable-inbox-outbox-event.poller.ts | 2 +- .../processor/inbox-outbox-event.processor.ts | 2 +- .../unit/inbox-outbox-event-processor.spec.ts | 4 ++-- .../MigrationInboxOutbox1733250000.ts | 23 +++++++++++++++++++ .../src/migrations/migrations.ts | 5 ++-- ...oorm-inbox-outbox-transport-event.model.ts | 5 ++-- ...roorm-inbox-outbox-transport-event.spec.ts | 10 ++++---- .../MigrationInboxOutbox1733250000.ts | 19 +++++++++++++++ .../typeorm-driver/src/migrations/index.ts | 3 ++- ...eorm-inbox-outbox-transport-event.model.ts | 6 ++--- 11 files changed, 63 insertions(+), 18 deletions(-) create mode 100644 packages/mikroorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts create mode 100644 packages/typeorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts diff --git a/packages/core/src/model/inbox-outbox-transport-event.interface.ts b/packages/core/src/model/inbox-outbox-transport-event.interface.ts index d1a9a68..659a9c5 100644 --- a/packages/core/src/model/inbox-outbox-transport-event.interface.ts +++ b/packages/core/src/model/inbox-outbox-transport-event.interface.ts @@ -2,7 +2,7 @@ export interface InboxOutboxTransportEvent { id: number; eventName: string; eventPayload: any; - delivedToListeners: string[]; + deliveredToListeners: string[]; readyToRetryAfter: number | null; expireAt: number; insertedAt: number; diff --git a/packages/core/src/poller/retryable-inbox-outbox-event.poller.ts b/packages/core/src/poller/retryable-inbox-outbox-event.poller.ts index bc1f55c..699baed 100644 --- a/packages/core/src/poller/retryable-inbox-outbox-event.poller.ts +++ b/packages/core/src/poller/retryable-inbox-outbox-event.poller.ts @@ -58,7 +58,7 @@ export class RetryableInboxOutboxEventPoller implements OnModuleInit { return Promise.allSettled( inboxOutboxTransportEvents.map((inboxOutboxTransportEvent) => { const notDeliveredToListeners = this.transactionalEventEmitter.getListeners(inboxOutboxTransportEvent.eventName).filter((listener) => { - return !inboxOutboxTransportEvent.delivedToListeners.includes(listener.getName()); + return !inboxOutboxTransportEvent.deliveredToListeners.includes(listener.getName()); }); return this.inboxOutboxEventProcessor.process( diff --git a/packages/core/src/processor/inbox-outbox-event.processor.ts b/packages/core/src/processor/inbox-outbox-event.processor.ts index cce58ff..04e65b4 100644 --- a/packages/core/src/processor/inbox-outbox-event.processor.ts +++ b/packages/core/src/processor/inbox-outbox-event.processor.ts @@ -34,7 +34,7 @@ export class InboxOutboxEventProcessor implements InboxOutboxEventProcessorContr } if (deliveredToListeners.length > 0) { - inboxOutboxTransportEvent.delivedToListeners.push(...deliveredToListeners); + inboxOutboxTransportEvent.deliveredToListeners.push(...deliveredToListeners); await databaseDriver.persist(inboxOutboxTransportEvent); } diff --git a/packages/core/src/test/unit/inbox-outbox-event-processor.spec.ts b/packages/core/src/test/unit/inbox-outbox-event-processor.spec.ts index 76bc270..6905ba5 100644 --- a/packages/core/src/test/unit/inbox-outbox-event-processor.spec.ts +++ b/packages/core/src/test/unit/inbox-outbox-event-processor.spec.ts @@ -68,7 +68,7 @@ describe('InboxOutboxEventProcessor', () => { const inboxOutboxTransportEvent : InboxOutboxTransportEvent = { readyToRetryAfter: new Date().getTime(), - delivedToListeners: [], + deliveredToListeners: [], eventName: 'newEvent', eventPayload: {}, expireAt: new Date().getTime() + 1000, @@ -116,7 +116,7 @@ describe('InboxOutboxEventProcessor', () => { const inboxOutboxTransportEvent : InboxOutboxTransportEvent = { readyToRetryAfter: new Date().getTime(), - delivedToListeners: [], + deliveredToListeners: [], eventName: 'newEvent', eventPayload: {}, expireAt: new Date().getTime() + 1000, diff --git a/packages/mikroorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts b/packages/mikroorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts new file mode 100644 index 0000000..cbd1ef6 --- /dev/null +++ b/packages/mikroorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts @@ -0,0 +1,23 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class MigrationInboxOutbox1733250000 extends Migration { + async up(): Promise { + this.addSql( + this.getKnex() + .schema.alterTable('inbox_outbox_transport_event', (table) => { + table.renameColumn('delived_to_listeners', 'delivered_to_listeners'); + }) + .toQuery(), + ); + } + + async down(): Promise { + this.addSql( + this.getKnex() + .schema.alterTable('inbox_outbox_transport_event', (table) => { + table.renameColumn('delivered_to_listeners', 'delived_to_listeners'); + }) + .toQuery(), + ); + } +} diff --git a/packages/mikroorm-driver/src/migrations/migrations.ts b/packages/mikroorm-driver/src/migrations/migrations.ts index 8ac4919..e093819 100644 --- a/packages/mikroorm-driver/src/migrations/migrations.ts +++ b/packages/mikroorm-driver/src/migrations/migrations.ts @@ -1,3 +1,4 @@ import { MigrationInboxOutbox1708527074 } from "./MigrationInboxOutbox1708527074"; - -export const InboxOutboxMigrations = [MigrationInboxOutbox1708527074]; \ No newline at end of file +import { MigrationInboxOutbox1733250000 } from "./MigrationInboxOutbox1733250000"; + +export const InboxOutboxMigrations = [MigrationInboxOutbox1708527074, MigrationInboxOutbox1733250000]; \ No newline at end of file diff --git a/packages/mikroorm-driver/src/model/mikroorm-inbox-outbox-transport-event.model.ts b/packages/mikroorm-driver/src/model/mikroorm-inbox-outbox-transport-event.model.ts index 0abb3d0..1cc014a 100644 --- a/packages/mikroorm-driver/src/model/mikroorm-inbox-outbox-transport-event.model.ts +++ b/packages/mikroorm-driver/src/model/mikroorm-inbox-outbox-transport-event.model.ts @@ -18,8 +18,9 @@ export class MikroOrmInboxOutboxTransportEvent implements InboxOutboxTransportEv @Property({ type: 'json', + fieldName: 'delivered_to_listeners', }) - delivedToListeners: string[]; + deliveredToListeners: string[]; @Property({ type: 'bigint' }) readyToRetryAfter: number; @@ -37,7 +38,7 @@ export class MikroOrmInboxOutboxTransportEvent implements InboxOutboxTransportEv event.expireAt = expireAt; event.readyToRetryAfter = readyToRetryAfter; event.insertedAt = Date.now(); - event.delivedToListeners = []; + event.deliveredToListeners = []; return event; } } diff --git a/packages/mikroorm-driver/src/test/mikroorm-inbox-outbox-transport-event.spec.ts b/packages/mikroorm-driver/src/test/mikroorm-inbox-outbox-transport-event.spec.ts index 776f844..d8419bd 100644 --- a/packages/mikroorm-driver/src/test/mikroorm-inbox-outbox-transport-event.spec.ts +++ b/packages/mikroorm-driver/src/test/mikroorm-inbox-outbox-transport-event.spec.ts @@ -52,7 +52,7 @@ describe('MikroOrmInboxOutboxTransportEvent', () => { expect(event.eventPayload).toEqual(eventPayload); expect(event.expireAt).toBe(expireAt); expect(event.readyToRetryAfter).toBe(readyToRetryAfter); - expect(event.delivedToListeners).toEqual([]); + expect(event.deliveredToListeners).toEqual([]); expect(event.insertedAt).toBeDefined(); expect(event.insertedAt).toBeLessThanOrEqual(Date.now()); }); @@ -88,7 +88,7 @@ describe('MikroOrmInboxOutboxTransportEvent', () => { expect(retrieved).toBeDefined(); expect(retrieved!.eventName).toBe('PersistenceTest'); expect(retrieved!.eventPayload).toEqual(eventPayload); - expect(retrieved!.delivedToListeners).toEqual([]); + expect(retrieved!.deliveredToListeners).toEqual([]); }); it('should persist JSON payload correctly', async () => { @@ -116,14 +116,14 @@ describe('MikroOrmInboxOutboxTransportEvent', () => { expect(retrieved!.eventPayload).toEqual(complexPayload); }); - it('should persist delivedToListeners as JSON array', async () => { + it('should persist deliveredToListeners as JSON array', async () => { const event = new MikroOrmInboxOutboxTransportEvent().create( 'ListenersTest', {}, Date.now() + 60000, Date.now() + 5000, ); - event.delivedToListeners = ['listener1', 'listener2']; + event.deliveredToListeners = ['listener1', 'listener2']; orm.em.persist(event); await orm.em.flush(); @@ -131,7 +131,7 @@ describe('MikroOrmInboxOutboxTransportEvent', () => { const retrieved = await orm.em.findOne(MikroOrmInboxOutboxTransportEvent, { eventName: 'ListenersTest' }); - expect(retrieved!.delivedToListeners).toEqual(['listener1', 'listener2']); + expect(retrieved!.deliveredToListeners).toEqual(['listener1', 'listener2']); }); it('should generate auto-increment id on persist', async () => { diff --git a/packages/typeorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts b/packages/typeorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts new file mode 100644 index 0000000..23f9444 --- /dev/null +++ b/packages/typeorm-driver/src/migrations/MigrationInboxOutbox1733250000.ts @@ -0,0 +1,19 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class MigrationInboxOutbox1733250000 implements MigrationInterface { + async up(queryRunner: QueryRunner): Promise { + await queryRunner.renameColumn( + 'inbox_outbox_transport_event', + 'delived_to_listeners', + 'delivered_to_listeners' + ); + } + + async down(queryRunner: QueryRunner): Promise { + await queryRunner.renameColumn( + 'inbox_outbox_transport_event', + 'delivered_to_listeners', + 'delived_to_listeners' + ); + } +} diff --git a/packages/typeorm-driver/src/migrations/index.ts b/packages/typeorm-driver/src/migrations/index.ts index bf58771..62a781d 100644 --- a/packages/typeorm-driver/src/migrations/index.ts +++ b/packages/typeorm-driver/src/migrations/index.ts @@ -1,3 +1,4 @@ import { MigrationInboxOutbox1726154235704 } from "./MigrationInboxOutbox1726154235704"; +import { MigrationInboxOutbox1733250000 } from "./MigrationInboxOutbox1733250000"; -export const InboxOutboxTransportEventMigrations = [MigrationInboxOutbox1726154235704] \ No newline at end of file +export const InboxOutboxTransportEventMigrations = [MigrationInboxOutbox1726154235704, MigrationInboxOutbox1733250000] \ No newline at end of file diff --git a/packages/typeorm-driver/src/model/typeorm-inbox-outbox-transport-event.model.ts b/packages/typeorm-driver/src/model/typeorm-inbox-outbox-transport-event.model.ts index 4580d40..3bac71f 100644 --- a/packages/typeorm-driver/src/model/typeorm-inbox-outbox-transport-event.model.ts +++ b/packages/typeorm-driver/src/model/typeorm-inbox-outbox-transport-event.model.ts @@ -21,9 +21,9 @@ export class TypeOrmInboxOutboxTransportEvent implements InboxOutboxTransportEve @Column({ type: 'json', - name: 'delived_to_listeners', + name: 'delivered_to_listeners', }) - delivedToListeners: string[]; + deliveredToListeners: string[]; @Column({ name: 'ready_to_retry_after', @@ -48,7 +48,7 @@ export class TypeOrmInboxOutboxTransportEvent implements InboxOutboxTransportEve event.expireAt = expireAt; event.readyToRetryAfter = readyToRetryAfter; event.insertedAt = Date.now(); - event.delivedToListeners = []; + event.deliveredToListeners = []; return event; } }