Skip to content

Commit

Permalink
Fixed setting streamName and streamPosition on inserting new stream
Browse files Browse the repository at this point in the history
  • Loading branch information
oskardudycz committed Dec 9, 2024
1 parent 2f6d2eb commit 50b31e7
Show file tree
Hide file tree
Showing 12 changed files with 71 additions and 71 deletions.
48 changes: 24 additions & 24 deletions src/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@event-driven-io/core",
"type": "module",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"description": "Emmett - Event Sourcing development made simple",
"engines": {
"node": ">=20.11.1"
Expand Down
6 changes: 3 additions & 3 deletions src/packages/emmett-esdb/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@event-driven-io/emmett-esdb",
"type": "module",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"description": "Emmett - EventStoreDB - Event Sourcing development made simple",
"scripts": {
"build": "tsup",
Expand Down Expand Up @@ -48,10 +48,10 @@
],
"dependencies": {},
"devDependencies": {
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.1"
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.3"
},
"peerDependencies": {
"@event-driven-io/emmett": "0.23.0-alpha.1",
"@event-driven-io/emmett": "0.23.0-alpha.3",
"@eventstore/db-client": "^6.2.1"
}
}
4 changes: 2 additions & 2 deletions src/packages/emmett-expressjs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@event-driven-io/emmett-expressjs",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"type": "module",
"description": "Emmett - Event Sourcing development made simple",
"scripts": {
Expand Down Expand Up @@ -49,7 +49,7 @@
"dependencies": {},
"devDependencies": {},
"peerDependencies": {
"@event-driven-io/emmett": "0.23.0-alpha.1",
"@event-driven-io/emmett": "0.23.0-alpha.3",
"@types/express": "^4.17.21",
"@types/supertest": "^6.0.2",
"express": "^4.19.2",
Expand Down
4 changes: 2 additions & 2 deletions src/packages/emmett-fastify/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@event-driven-io/emmett-fastify",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"type": "module",
"description": "Emmett - Event Sourcing development made simple",
"scripts": {
Expand Down Expand Up @@ -53,7 +53,7 @@
"dependencies": {},
"devDependencies": {},
"peerDependencies": {
"@event-driven-io/emmett": "0.23.0-alpha.1",
"@event-driven-io/emmett": "0.23.0-alpha.3",
"fastify": "^4.28.1",
"@fastify/compress": "^7.0.3",
"@fastify/etag": "^5.2.0",
Expand Down
6 changes: 3 additions & 3 deletions src/packages/emmett-mongodb/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@event-driven-io/emmett-mongodb",
"type": "module",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"description": "Emmett - MongoDB - Event Sourcing development made simple",
"scripts": {
"build": "tsup",
Expand Down Expand Up @@ -47,11 +47,11 @@
"dist"
],
"devDependencies": {
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.1",
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.3",
"@testcontainers/mongodb": "^10.13.2"
},
"peerDependencies": {
"@event-driven-io/emmett": "0.23.0-alpha.1",
"@event-driven-io/emmett": "0.23.0-alpha.3",
"mongodb": "^6.10.0"
}
}
48 changes: 24 additions & 24 deletions src/packages/emmett-mongodb/src/eventStore/mongoDBEventStore.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {
ExpectedVersionConflictError,
STREAM_DOES_NOT_EXIST,
assertExpectedVersionMatchesCurrent,
type AggregateStreamOptions,
type AggregateStreamResult,
Expand All @@ -9,7 +8,6 @@ import {
type Event,
type EventMetaDataOf,
type EventStore,
type ExpectedStreamVersion,
type ProjectionRegistration,
type ReadEvent,
type ReadEventMetadataWithoutGlobalPosition,
Expand Down Expand Up @@ -85,6 +83,24 @@ export type MongoDBReadEvent<EventType extends Event = Event> = ReadEvent<
MongoDBReadEventMetadata
>;

export type MongoDBSingleCollectionEventStoreOptions = {
storage: 'SINGLE_COLLECTION';
collection: string;
projections?: ProjectionRegistration<
'inline',
MongoDBReadEventMetadata,
MongoDBProjectionInlineHandlerContext
>[];
} & (
| {
client: MongoClient;
}
| {
connectionString: string;
clientOptions?: MongoClientOptions;
}
);

export type MongoDBEventStoreOptions = {
database?: string;
collection?: string;
Expand Down Expand Up @@ -270,9 +286,12 @@ class MongoDBEventStoreImplementation implements MongoDBEventStore {
const now = new Date();
const updates: UpdateFilter<EventStream> = {
$push: { messages: { $each: eventsToAppend } },
$set: { 'metadata.updatedAt': now },
$inc: { 'metadata.streamPosition': BigInt(events.length) },
$set: {
'metadata.updatedAt': now,
'metadata.streamPosition': currentStreamVersion + BigInt(events.length),
},
$setOnInsert: {
streamName,
'metadata.streamId': streamId,
'metadata.streamType': streamType,
'metadata.createdAt': now,
Expand All @@ -293,9 +312,7 @@ class MongoDBEventStoreImplementation implements MongoDBEventStore {
const updatedStream = await collection.updateOne(
{
streamName: { $eq: streamName },
'metadata.streamPosition': toExpectedVersion(
options?.expectedStreamVersion,
),
'metadata.streamPosition': currentStreamVersion,
},
updates,
{ useBigInt64: true, upsert: true },
Expand Down Expand Up @@ -367,23 +384,6 @@ export const getMongoDBEventStore = (
options: MongoDBEventStoreOptions,
): MongoDBEventStore => new MongoDBEventStoreImplementation(options);

function toExpectedVersion(
expectedStreamVersion?: ExpectedStreamVersion,
): bigint | undefined {
if (!expectedStreamVersion) return undefined;

if (typeof expectedStreamVersion === 'string') {
switch (expectedStreamVersion) {
case STREAM_DOES_NOT_EXIST:
return BigInt(0);
default:
return undefined;
}
}

return expectedStreamVersion;
}

/**
* Accepts a `streamType` (the type/category of the event stream) and an `streamId`
* (the individual entity/object or aggregate ID) and combines them to a singular
Expand Down
6 changes: 3 additions & 3 deletions src/packages/emmett-postgresql/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@event-driven-io/emmett-postgresql",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"type": "module",
"description": "Emmett - PostgreSQL - Event Sourcing development made simple",
"scripts": {
Expand Down Expand Up @@ -70,10 +70,10 @@
],
"devDependencies": {
"@testcontainers/postgresql": "^10.12.0",
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.1"
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.3"
},
"peerDependencies": {
"@event-driven-io/emmett": "0.23.0-alpha.1",
"@event-driven-io/emmett": "0.23.0-alpha.3",
"@event-driven-io/pongo": "0.16.4"
}
}
2 changes: 1 addition & 1 deletion src/packages/emmett-shims/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@event-driven-io/emmett-shims",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"type": "module",
"description": "Emmett - Event Sourcing development made simple",
"scripts": {
Expand Down
4 changes: 2 additions & 2 deletions src/packages/emmett-testcontainers/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@event-driven-io/emmett-testcontainers",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"type": "module",
"description": "Emmett - TestContainers - Event Sourcing development made simple",
"scripts": {
Expand Down Expand Up @@ -47,7 +47,7 @@
"dist"
],
"dependencies": {
"@event-driven-io/emmett": "0.23.0-alpha.1",
"@event-driven-io/emmett": "0.23.0-alpha.3",
"testcontainers": "^10.12.0"
},
"devDependencies": {
Expand Down
10 changes: 5 additions & 5 deletions src/packages/emmett-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "@event-driven-io/emmett-tests",
"type": "module",
"private": true,
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"description": "Emmett - Internal E2E Tests",
"scripts": {
"build": "tsup",
Expand Down Expand Up @@ -55,10 +55,10 @@
"dist"
],
"devDependencies": {
"@event-driven-io/emmett": "0.23.0-alpha.1",
"@event-driven-io/emmett-esdb": "0.23.0-alpha.1",
"@event-driven-io/emmett-postgresql": "0.23.0-alpha.1",
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.1",
"@event-driven-io/emmett": "0.23.0-alpha.3",
"@event-driven-io/emmett-esdb": "0.23.0-alpha.3",
"@event-driven-io/emmett-postgresql": "0.23.0-alpha.3",
"@event-driven-io/emmett-testcontainers": "0.23.0-alpha.3",
"@testcontainers/postgresql": "^10.12.0"
}
}
2 changes: 1 addition & 1 deletion src/packages/emmett/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@event-driven-io/emmett",
"type": "module",
"version": "0.23.0-alpha.1",
"version": "0.23.0-alpha.3",
"description": "Emmett - Event Sourcing development made simple",
"scripts": {
"build": "tsup",
Expand Down

0 comments on commit 50b31e7

Please sign in to comment.