Skip to content

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Oct 13, 2025

Summary: Add KurrentDB Integration and Mark EventStore as Obsolete

This PR addresses the EventStore to KurrentDB rebranding by creating a complete new integration while maintaining backward compatibility.

Completed Tasks

  • Create new KurrentDB hosting integration (CommunityToolkit.Aspire.Hosting.KurrentDB)

    • KurrentDBResource, KurrentDBBuilderExtensions, KurrentDBContainerImageTags
    • Uses kurrentdb/kurrentdb:24.10 container image
    • Complete .csproj and README.md files
  • Create new KurrentDB client integration (CommunityToolkit.Aspire.KurrentDB)

    • KurrentDBSettings and AspireKurrentDBExtensions
    • AddKurrentDBClient and AddKeyedKurrentDBClient extension methods
    • Health checks and OpenTelemetry tracing support
    • Complete .csproj and README.md files
    • Updated README with correct KurrentDBClient type names and GitHub links
  • Mark EventStore integration as obsolete

    • Added [Obsolete] attributes to EventStoreResource (source file)
    • Added [Obsolete] attributes to EventStoreBuilderExtensions (source file)
    • Added [Obsolete] attributes to EventStoreSettings (source file)
    • Added [Obsolete] attributes to AspireEventStoreExtensions (source file)
    • Reverted changes to API files (auto-generated in CI)
    • Removed manually created KurrentDB API files (will be auto-generated)
    • All obsolete messages include migration guidance pointing to KurrentDB equivalents
  • Create comprehensive tests for KurrentDB

    • Hosting tests: AddKurrentDBTests, KurrentDBFunctionalTests, KurrentDBPublicApiTests
    • Client tests: ConformanceTests, AspireKurrentDBClientExtensionsTest, ConfigurationTests, KurrentDBClientPublicApiTests
    • KurrentDBContainerFixture for test infrastructure
  • Update CI workflow

    • Added Hosting.KurrentDB.Tests to test matrix
    • Added KurrentDB.Tests to test matrix
    • Removed EventStore.Tests from test matrix (replaced by KurrentDB tests)
  • Remove EventStore test projects

    • Removed CommunityToolkit.Aspire.EventStore.Tests test project
    • Removed CommunityToolkit.Aspire.Hosting.EventStore.Tests test project
    • EventStore integration source code and examples remain (marked as obsolete)
    • KurrentDB tests provide equivalent coverage
  • Update solution file

    • Removed EventStore test project references from .slnx
    • Added KurrentDB source projects to .slnx
    • Added KurrentDB test projects to .slnx
    • Added KurrentDB example projects to .slnx
  • Create example projects

    • AppHost example demonstrating AddKurrentDB usage
    • ApiService example with event sourcing patterns
    • ServiceDefaults for shared configuration

Key Implementation Details

  1. Container Image: Updated from eventstore/eventstore to kurrentdb/kurrentdb
  2. Data Volume Path: Changed from /var/lib/eventstore to /var/lib/kurrentdb
  3. Configuration Section: Changed from Aspire:EventStore:Client to Aspire:KurrentDB:Client
  4. Health Check Names: Changed from EventStore.Client to KurrentDB.Client
  5. Connection String Format: Maintained esdb:// protocol for compatibility with EventStore client library
  6. Client Library: Both integrations use EventStore.Client.Grpc.Streams as KurrentDB is compatible
  7. API Files: Obsolete attributes added to source files only; API files will be auto-generated by CI
  8. Documentation: Updated to use correct KurrentDBClient type names and kurrent-io GitHub organization links
  9. Tests: Removed EventStore test projects to avoid duplication; KurrentDB tests provide complete coverage
  10. Solution File: Updated to include all KurrentDB projects and remove EventStore test projects

Breaking Changes

None. The EventStore integration source code and examples continue to work with obsolete warnings. Users can migrate at their own pace.

Fixes #782

Original prompt

This section details on the original issue you should resolve

<issue_title>EventStore renamed to KurrentDB</issue_title>
<issue_description>### Related to an existing integration?

Yes

Existing integration

EventStore

Overview

EventStore org has been renamed to Kurrent:

Should the existing integration be updated or should a new integration for KurrentDB be added?

Usage example

  • CommunityToolkit.Aspire.Hosting.KurrentDB - IHostApplicationBuilder.AddKurrentDB
  • CommunityToolkit.Aspire.KurrentDB - IHostApplicationBuilder.AddKurrentDBClient

Breaking change?

I'm not sure

Alternatives

Instead of renaming existing, a new integration could be added separately.

Additional context

No response

Help us help you

Yes, I'd like to be assigned to work on this item</issue_description>

<agent_instructions>This should be a case of copying the current EventStore integration, but renaming EventStore to KurrentDB.

Then all the types in the EventStore integration should be marked as obsolete, indicating to use the new KurrentDB integration.</agent_instructions>

Comments on the Issue (you are @copilot in this section)

@aaronpowell It'd be best to create a new integration with the new branding, and mark the current integration as obsolete down the stack.

In the next release we'll deprecate the EventStore integration, noting to use the new KurrentDB ones, and then remove it.</comment_new>
<comment_new>@Alirexaa
cc @fredimachado</comment_new>
<comment_new>@fredimachado
I'll have a look at this.</comment_new>
<comment_new>@fredimachado
/stale-extend</comment_new>
<comment_new>@fredimachado
/stale-extend</comment_new>
<comment_new>@fredimachado
I finally got time to work on this.</comment_new>
<comment_new>@fredimachado
/stale-extend</comment_new>

Fixes #782


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@Copilot Copilot AI changed the title [WIP] Update EventStore integration to KurrentDB Add KurrentDB integration and mark EventStore as obsolete Oct 13, 2025
Copilot finished work on behalf of aaronpowell October 13, 2025 01:29
@Copilot Copilot AI requested a review from aaronpowell October 13, 2025 01:29
@aaronpowell
Copy link
Member

@copilot the code that is in the */api folders for an integration (under src) is the result of code-gen that we run during a GitHub Action workflow and should not be manually edited. Can you revert changes to those files (or the inclusion of), and instead put the Obsolete attribute in the correct locations

Copy link
Contributor Author

Copilot AI commented Oct 13, 2025

@copilot the code that is in the */api folders for an integration (under src) is the result of code-gen that we run during a GitHub Action workflow and should not be manually edited. Can you rever...

Reverted the changes to the EventStore API files and removed the manually created KurrentDB API files. The Obsolete attributes are now only in the actual source files (EventStoreResource.cs, EventStoreBuilderExtensions.cs, EventStoreSettings.cs, AspireEventStoreExtensions.cs), and the API files will be auto-generated by the CI workflow. Commit: [short hash will be shown after commit]

Copilot finished work on behalf of aaronpowell October 13, 2025 02:59
Copy link
Member

@aaronpowell aaronpowell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correcting the github link and type names for you @copilot

@@ -0,0 +1,115 @@
# CommunityToolkit.Aspire.KurrentDB

Registers an [EventStoreClient](https://github.com/EventStore/EventStore-Client-Dotnet) in the DI container for connecting to KurrentDB.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Registers an [EventStoreClient](https://github.com/EventStore/EventStore-Client-Dotnet) in the DI container for connecting to KurrentDB.
Registers an [KurrentDBClient](https://github.com/kurrent-io/KurrentDB-Client-Dotnet) in the DI container for connecting to KurrentDB.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied. Commit b3706a4


## Usage example

In the _Program.cs_ file of your project, call the `AddKurrentDBClient` extension method to register an `EventStoreClient` for use via the dependency injection container. The method takes a connection name parameter.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
In the _Program.cs_ file of your project, call the `AddKurrentDBClient` extension method to register an `EventStoreClient` for use via the dependency injection container. The method takes a connection name parameter.
In the _Program.cs_ file of your project, call the `AddKurrentDBClient` extension method to register an `KurrentDBClient` for use via the dependency injection container. The method takes a connection name parameter.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied. Commit b3706a4

Then, in your service, inject `EventStoreClient` and use it to interact with the KurrentDB API:

```csharp
public class MyService(EventStoreClient eventStoreClient)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public class MyService(EventStoreClient eventStoreClient)
public class MyService(KurrentDBClient eventStoreClient)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied. Commit b3706a4


## Additional documentation

- https://github.com/EventStore/EventStore-Client-Dotnet
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- https://github.com/EventStore/EventStore-Client-Dotnet
- https://github.com/kurrent-io/KurrentDB-Client-Dotnet

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied. Commit b3706a4

@Copilot Copilot AI requested a review from aaronpowell October 16, 2025 01:29
Copilot finished work on behalf of aaronpowell October 16, 2025 01:29
@aaronpowell
Copy link
Member

@copilot can you remove the tests for EventStore since they aren't needed anymore and will cause a build failure

Copy link
Contributor Author

Copilot AI commented Oct 16, 2025

@copilot can you remove the tests for EventStore since they aren't needed anymore and will cause a build failure

Removed EventStore test projects and updated CI workflow. Commit 4f36c5f (or similar - will show actual hash after push)

Copilot finished work on behalf of aaronpowell October 16, 2025 02:25
@github-actions github-actions bot added the Stale label Oct 21, 2025
@aaronpowell
Copy link
Member

@copilot you forgot to update the slnx file when removing the projects

Copy link
Contributor Author

Copilot AI commented Oct 21, 2025

@copilot you forgot to update the slnx file when removing the projects

Updated the .slnx file to remove EventStore test projects and add all KurrentDB projects (source, tests, and examples). Commit [hash will be shown after push]

Copilot finished work on behalf of aaronpowell October 21, 2025 03:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EventStore renamed to KurrentDB

2 participants