Skip to content

Commit d3303a4

Browse files
committed
Fixed setting streamName and streamPosition on inserting new stream
1 parent 10db479 commit d3303a4

12 files changed

Lines changed: 71 additions & 71 deletions

File tree

src/package-lock.json

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

src/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@event-driven-io/core",
33
"type": "module",
4-
"version": "0.23.0-alpha.1",
4+
"version": "0.23.0-alpha.3",
55
"description": "Emmett - Event Sourcing development made simple",
66
"engines": {
77
"node": ">=20.11.1"

src/packages/emmett-esdb/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@event-driven-io/emmett-esdb",
33
"type": "module",
4-
"version": "0.23.0-alpha.1",
4+
"version": "0.23.0-alpha.3",
55
"description": "Emmett - EventStoreDB - Event Sourcing development made simple",
66
"scripts": {
77
"build": "tsup",
@@ -48,10 +48,10 @@
4848
],
4949
"dependencies": {},
5050
"devDependencies": {
51-
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.1"
51+
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.3"
5252
},
5353
"peerDependencies": {
54-
"@event-driven-io/emmett": "0.23.0-alpha.1",
54+
"@event-driven-io/emmett": "0.23.0-alpha.3",
5555
"@eventstore/db-client": "^6.2.1"
5656
}
5757
}

src/packages/emmett-expressjs/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@event-driven-io/emmett-expressjs",
3-
"version": "0.23.0-alpha.1",
3+
"version": "0.23.0-alpha.3",
44
"type": "module",
55
"description": "Emmett - Event Sourcing development made simple",
66
"scripts": {
@@ -49,7 +49,7 @@
4949
"dependencies": {},
5050
"devDependencies": {},
5151
"peerDependencies": {
52-
"@event-driven-io/emmett": "0.23.0-alpha.1",
52+
"@event-driven-io/emmett": "0.23.0-alpha.3",
5353
"@types/express": "^4.17.21",
5454
"@types/supertest": "^6.0.2",
5555
"express": "^4.19.2",

src/packages/emmett-fastify/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@event-driven-io/emmett-fastify",
3-
"version": "0.23.0-alpha.1",
3+
"version": "0.23.0-alpha.3",
44
"type": "module",
55
"description": "Emmett - Event Sourcing development made simple",
66
"scripts": {
@@ -53,7 +53,7 @@
5353
"dependencies": {},
5454
"devDependencies": {},
5555
"peerDependencies": {
56-
"@event-driven-io/emmett": "0.23.0-alpha.1",
56+
"@event-driven-io/emmett": "0.23.0-alpha.3",
5757
"fastify": "^4.28.1",
5858
"@fastify/compress": "^7.0.3",
5959
"@fastify/etag": "^5.2.0",

src/packages/emmett-mongodb/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@event-driven-io/emmett-mongodb",
33
"type": "module",
4-
"version": "0.23.0-alpha.1",
4+
"version": "0.23.0-alpha.3",
55
"description": "Emmett - MongoDB - Event Sourcing development made simple",
66
"scripts": {
77
"build": "tsup",
@@ -47,11 +47,11 @@
4747
"dist"
4848
],
4949
"devDependencies": {
50-
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.1",
50+
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.3",
5151
"@testcontainers/mongodb": "^10.13.2"
5252
},
5353
"peerDependencies": {
54-
"@event-driven-io/emmett": "0.23.0-alpha.1",
54+
"@event-driven-io/emmett": "0.23.0-alpha.3",
5555
"mongodb": "^6.10.0"
5656
}
5757
}

src/packages/emmett-mongodb/src/eventStore/mongoDBEventStore.ts

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {
22
ExpectedVersionConflictError,
3-
STREAM_DOES_NOT_EXIST,
43
assertExpectedVersionMatchesCurrent,
54
type AggregateStreamOptions,
65
type AggregateStreamResult,
@@ -9,7 +8,6 @@ import {
98
type Event,
109
type EventMetaDataOf,
1110
type EventStore,
12-
type ExpectedStreamVersion,
1311
type ProjectionRegistration,
1412
type ReadEvent,
1513
type ReadEventMetadataWithoutGlobalPosition,
@@ -85,6 +83,24 @@ export type MongoDBReadEvent<EventType extends Event = Event> = ReadEvent<
8583
MongoDBReadEventMetadata
8684
>;
8785

86+
export type MongoDBSingleCollectionEventStoreOptions = {
87+
storage: 'SINGLE_COLLECTION';
88+
collection: string;
89+
projections?: ProjectionRegistration<
90+
'inline',
91+
MongoDBReadEventMetadata,
92+
MongoDBProjectionInlineHandlerContext
93+
>[];
94+
} & (
95+
| {
96+
client: MongoClient;
97+
}
98+
| {
99+
connectionString: string;
100+
clientOptions?: MongoClientOptions;
101+
}
102+
);
103+
88104
export type MongoDBEventStoreOptions = {
89105
database?: string;
90106
collection?: string;
@@ -270,9 +286,12 @@ class MongoDBEventStoreImplementation implements MongoDBEventStore {
270286
const now = new Date();
271287
const updates: UpdateFilter<EventStream> = {
272288
$push: { messages: { $each: eventsToAppend } },
273-
$set: { 'metadata.updatedAt': now },
274-
$inc: { 'metadata.streamPosition': BigInt(events.length) },
289+
$set: {
290+
'metadata.updatedAt': now,
291+
'metadata.streamPosition': currentStreamVersion + BigInt(events.length),
292+
},
275293
$setOnInsert: {
294+
streamName,
276295
'metadata.streamId': streamId,
277296
'metadata.streamType': streamType,
278297
'metadata.createdAt': now,
@@ -293,9 +312,7 @@ class MongoDBEventStoreImplementation implements MongoDBEventStore {
293312
const updatedStream = await collection.updateOne(
294313
{
295314
streamName: { $eq: streamName },
296-
'metadata.streamPosition': toExpectedVersion(
297-
options?.expectedStreamVersion,
298-
),
315+
'metadata.streamPosition': currentStreamVersion,
299316
},
300317
updates,
301318
{ useBigInt64: true, upsert: true },
@@ -367,23 +384,6 @@ export const getMongoDBEventStore = (
367384
options: MongoDBEventStoreOptions,
368385
): MongoDBEventStore => new MongoDBEventStoreImplementation(options);
369386

370-
function toExpectedVersion(
371-
expectedStreamVersion?: ExpectedStreamVersion,
372-
): bigint | undefined {
373-
if (!expectedStreamVersion) return undefined;
374-
375-
if (typeof expectedStreamVersion === 'string') {
376-
switch (expectedStreamVersion) {
377-
case STREAM_DOES_NOT_EXIST:
378-
return BigInt(0);
379-
default:
380-
return undefined;
381-
}
382-
}
383-
384-
return expectedStreamVersion;
385-
}
386-
387387
/**
388388
* Accepts a `streamType` (the type/category of the event stream) and an `streamId`
389389
* (the individual entity/object or aggregate ID) and combines them to a singular

src/packages/emmett-postgresql/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@event-driven-io/emmett-postgresql",
3-
"version": "0.23.0-alpha.1",
3+
"version": "0.23.0-alpha.3",
44
"type": "module",
55
"description": "Emmett - PostgreSQL - Event Sourcing development made simple",
66
"scripts": {
@@ -70,10 +70,10 @@
7070
],
7171
"devDependencies": {
7272
"@testcontainers/postgresql": "^10.12.0",
73-
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.1"
73+
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.3"
7474
},
7575
"peerDependencies": {
76-
"@event-driven-io/emmett": "0.23.0-alpha.1",
76+
"@event-driven-io/emmett": "0.23.0-alpha.3",
7777
"@event-driven-io/pongo": "0.16.4"
7878
}
7979
}

src/packages/emmett-shims/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@event-driven-io/emmett-shims",
3-
"version": "0.23.0-alpha.1",
3+
"version": "0.23.0-alpha.3",
44
"type": "module",
55
"description": "Emmett - Event Sourcing development made simple",
66
"scripts": {

src/packages/emmett-testcontainers/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@event-driven-io/emmett-testcontainers",
3-
"version": "0.23.0-alpha.1",
3+
"version": "0.23.0-alpha.3",
44
"type": "module",
55
"description": "Emmett - TestContainers - Event Sourcing development made simple",
66
"scripts": {
@@ -47,7 +47,7 @@
4747
"dist"
4848
],
4949
"dependencies": {
50-
"@event-driven-io/emmett": "0.23.0-alpha.1",
50+
"@event-driven-io/emmett": "0.23.0-alpha.3",
5151
"testcontainers": "^10.12.0"
5252
},
5353
"devDependencies": {

0 commit comments

Comments
 (0)