User Story
As a developer using SQLite with Pulse, I want IEventOutbox to be registered as SQLiteEventOutbox when AddSQLiteOutbox() is configured, so that events stored via IEventOutbox share the same SQLite connection and transaction as my business logic.
Background
Mirrors the SQL Server (#230) and PostgreSQL (#231) fixes. SQLiteEventOutbox exists but is not registered in DI, causing applications to fall back to the default OutboxEventStore.
Requirements
- Update
SQLiteEventOutbox to accept SQLiteOutboxOptions as constructor parameter; open SqliteConnection from ConnectionString; enlist in active SqliteTransaction from IOutboxTransactionScope when present.
- In
AddSQLiteOutbox(), register IEventOutbox → SQLiteEventOutbox as Scoped.
- Add
AddSQLiteOutboxTransactionScope<TUnitOfWork>() convenience extension.
- Update unit tests for
SQLiteEventOutbox to cover the new constructor path.
Acceptance Criteria
User Story
As a developer using SQLite with Pulse, I want
IEventOutboxto be registered asSQLiteEventOutboxwhenAddSQLiteOutbox()is configured, so that events stored viaIEventOutboxshare the same SQLite connection and transaction as my business logic.Background
Mirrors the SQL Server (#230) and PostgreSQL (#231) fixes.
SQLiteEventOutboxexists but is not registered in DI, causing applications to fall back to the defaultOutboxEventStore.Requirements
SQLiteEventOutboxto acceptSQLiteOutboxOptionsas constructor parameter; openSqliteConnectionfromConnectionString; enlist in activeSqliteTransactionfromIOutboxTransactionScopewhen present.AddSQLiteOutbox(), registerIEventOutbox→SQLiteEventOutboxasScoped.AddSQLiteOutboxTransactionScope<TUnitOfWork>()convenience extension.SQLiteEventOutboxto cover the new constructor path.Acceptance Criteria
AddSQLiteOutbox(), resolvingIEventOutboxreturnsSQLiteEventOutbox.SQLiteEventOutboxenlists in the activeSqliteTransactionfromIOutboxTransactionScopewhen present.SQLiteEventOutboxopens its own connection when noIOutboxTransactionScopeis active.AddSQLiteOutboxTransactionScope<TUnitOfWork>()registers the UoW asScoped.