From d36752ed7b55f40282285f8fe824f09100ba3a94 Mon Sep 17 00:00:00 2001 From: David Pine Date: Wed, 19 Nov 2025 21:17:01 -0600 Subject: [PATCH 1/2] chore: Address obsoletion and rebradning of EventStore to KurrentDB - https://www.kurrent.io/blog/kurrent-re-brand-faq --- src/frontend/redirects.mjs | 1 + src/frontend/scripts/update-integrations.js | 3 +- src/frontend/sidebar.topics.ts | 1 - .../src/assets/icons/eventstore-icon.png | Bin 36530 -> 0 bytes .../src/components/IntegrationGrid.astro | 2 - .../integrations/databases/eventstore.mdx | 177 ------------------ 6 files changed, 3 insertions(+), 181 deletions(-) delete mode 100644 src/frontend/src/assets/icons/eventstore-icon.png delete mode 100644 src/frontend/src/content/docs/integrations/databases/eventstore.mdx diff --git a/src/frontend/redirects.mjs b/src/frontend/redirects.mjs index b29475b1..7943f4ce 100644 --- a/src/frontend/redirects.mjs +++ b/src/frontend/redirects.mjs @@ -2,4 +2,5 @@ export const redirects = { // Docs redirects '/integrations/postgres': '/integrations/databases/postgres/', '/integrations/rabbitmq/': '/integrations/messaging/rabbitmq/', + '/integrations/eventstore/': '/integrations/databases/kurrentdb/', }; \ No newline at end of file diff --git a/src/frontend/scripts/update-integrations.js b/src/frontend/scripts/update-integrations.js index ccdaa068..5d813ca2 100644 --- a/src/frontend/scripts/update-integrations.js +++ b/src/frontend/scripts/update-integrations.js @@ -14,7 +14,8 @@ const EXCLUDED_PACKAGES = [ 'Aspire.Hosting.IncrementalMigration', 'Aspire.Hosting.NodeJs', 'Aspire.MongoDB.Driver.v3', - 'Aspire.RabbitMQ.Client.v7' + 'Aspire.RabbitMQ.Client.v7', + 'CommunityToolkit.Aspire.Hosting.EventStore' ]; const OUTPUT_PATH = './src/data/aspire-integrations.json'; const OUTPUT_NAME_PATH = './src/data/aspire-integration-names.json'; diff --git a/src/frontend/sidebar.topics.ts b/src/frontend/sidebar.topics.ts index 3ea91744..1caf06aa 100644 --- a/src/frontend/sidebar.topics.ts +++ b/src/frontend/sidebar.topics.ts @@ -952,7 +952,6 @@ export const sidebarTopics: StarlightSidebarTopicsUserConfig = [ 'zh-CN': '数据库', }, items: [ { label: "Elasticsearch", slug: "integrations/databases/elasticsearch" }, - { label: "EventStore", slug: "integrations/databases/eventstore" }, { label: "KurrentDB", slug: "integrations/databases/kurrentdb" }, { label: "Meilisearch", slug: "integrations/databases/meilisearch" }, { label: "Milvus", slug: "integrations/databases/milvus" }, diff --git a/src/frontend/src/assets/icons/eventstore-icon.png b/src/frontend/src/assets/icons/eventstore-icon.png deleted file mode 100644 index 5e9f587260439e2d0a0ed240b1cd7618c797b0ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36530 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 V({52p-+#K<;=(dQ#R6Zv{tvOyn@a!y diff --git a/src/frontend/src/components/IntegrationGrid.astro b/src/frontend/src/components/IntegrationGrid.astro index 8b74768d..7960d0a2 100644 --- a/src/frontend/src/components/IntegrationGrid.astro +++ b/src/frontend/src/components/IntegrationGrid.astro @@ -40,7 +40,6 @@ import denoLightIcon from "@assets/icons/deno-light-icon.png"; import devTunnelsIcon from "@assets/icons/dev-tunnels-icon.svg"; import dockerIcon from "@assets/icons/docker.svg"; import elasticIcon from "@assets/icons/elastic-icon.png"; -import eventStoreIcon from "@assets/icons/eventstore-icon.png"; import flagDIcon from "@assets/icons/flagd-icon.svg"; import flagDLightIcon from "@assets/icons/flagd-light-icon.svg"; import garnetIcon from "@assets/icons/garnet-icon.png"; @@ -179,7 +178,6 @@ const icons = [ { meta: devTunnelsIcon, alt: "Dev Tunnels", search: "devtunnels" }, { meta: dockerIcon, alt: "Docker", search: "docker" }, { meta: elasticIcon, alt: "Elasticsearch", search: "elasticsearch" }, - { meta: eventStoreIcon, alt: "EventStore", search: "eventstore" }, { meta: flagDIcon, alt: "flagd", search: "flagd", light: flagDLightIcon }, { meta: garnetIcon, alt: "Garnet", search: "garnet" }, { meta: goIcon, alt: "Go", search: "golang gofeature", light: goLightIcon }, diff --git a/src/frontend/src/content/docs/integrations/databases/eventstore.mdx b/src/frontend/src/content/docs/integrations/databases/eventstore.mdx deleted file mode 100644 index c8b3b7d6..00000000 --- a/src/frontend/src/content/docs/integrations/databases/eventstore.mdx +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: EventStore integration -description: Learn how to use the EventStore integration, which includes both hosting and client integrations. ---- - -import { Aside } from '@astrojs/starlight/components'; -import { Badge } from '@astrojs/starlight/components'; -import InstallPackage from '@components/InstallPackage.astro'; -import InstallDotNetPackage from '@components/InstallDotNetPackage.astro'; -import { Image } from 'astro:assets'; -import eventstoreIcon from '@assets/icons/eventstore-icon.png'; - - - -EventStore logo - -[EventStore](https://eventstore.com) is a database designed for Event Sourcing, offering high availability and reliability for storing events. The Aspire EventStore integration enables you to connect to existing EventStore instances or create new instances from Aspire using the `docker.io/eventstore/eventstore` container image. - -## Hosting integration - -To run the EventStore container, install the [📦 CommunityToolkit.Aspire.Hosting.EventStore](https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.EventStore) NuGet package in the AppHost project. - - - -### Add EventStore resource - -In the AppHost project, register and consume the EventStore integration using the `AddEventStore` extension method to add the EventStore container to the application builder. - -```csharp title="C# — AppHost.cs" -var builder = DistributedApplication.CreateBuilder(args); - -var eventstore = builder.AddEventStore("eventstore"); - -builder.AddProject() - .WithReference(eventstore); - -// After adding all resources, run the app... -``` - -### Add EventStore resource with data volume - -To add a data volume to the EventStore resource, call the `WithDataVolume` method: - -```csharp title="C# — AppHost.cs" -var builder = DistributedApplication.CreateBuilder(args); - -var eventstore = builder.AddEventStore("eventstore") - .WithDataVolume(); - -builder.AddProject() - .WithReference(eventstore); - -// After adding all resources, run the app... -``` - -The data volume is used to persist the EventStore data outside the lifecycle of its container. The data volume is mounted at the `/var/lib/eventstore` path in the EventStore container. - -### Add EventStore resource with data bind mount - -To add a data bind mount to the EventStore resource, call the `WithDataBindMount` method: - -```csharp title="C# — AppHost.cs" -var builder = DistributedApplication.CreateBuilder(args); - -var eventstore = builder.AddEventStore("eventstore") - .WithDataBindMount(source: @"C:\EventStore\Data"); - -builder.AddProject() - .WithReference(eventstore); - -// After adding all resources, run the app... -``` - -Data bind mounts rely on the host machine's filesystem to persist the EventStore data across container restarts. - -## Client integration - -To get started with the Aspire EventStore client integration, install the [📦 CommunityToolkit.Aspire.EventStore](https://nuget.org/packages/CommunityToolkit.Aspire.EventStore) NuGet package in the client-consuming project. - - - -### Add EventStore client - -In the `Program.cs` file of your client-consuming project, call the `AddEventStoreClient` extension method to register an `EventStoreClient` for use via the dependency injection container. The method takes a connection name parameter. - -```csharp -builder.AddEventStoreClient(connectionName: "eventstore"); -``` - - - -You can then retrieve the `EventStoreClient` instance using dependency injection: - -```csharp -public class ExampleService(EventStoreClient client) -{ - // Use client... -} -``` - -### Add keyed EventStore client - -There might be situations where you want to register multiple `EventStoreClient` instances with different connection names. To register keyed EventStore clients, call the `AddKeyedEventStoreClient` method: - -```csharp -builder.AddKeyedEventStoreClient(name: "accounts"); -builder.AddKeyedEventStoreClient(name: "orders"); -``` - -Then you can retrieve the `EventStoreClient` instances using dependency injection: - -```csharp -public class ExampleService( - [FromKeyedServices("accounts")] EventStoreClient accountsClient, - [FromKeyedServices("orders")] EventStoreClient ordersClient) -{ - // Use clients... -} -``` - -### Configuration - -The Aspire EventStore client integration provides multiple options to configure the server connection. - -#### Use a connection string - -When using a connection string from the `ConnectionStrings` configuration section, provide the name of the connection string: - -```csharp -builder.AddEventStoreClient("eventstore"); -``` - -Then the connection string will be retrieved from the `ConnectionStrings` configuration section: - -```json -{ - "ConnectionStrings": { - "eventstore": "esdb://localhost:22113?tls=false" - } -} -``` - -#### Use configuration providers - -The Aspire EventStore Client integration supports configuration. It loads the settings from configuration using the `Aspire:EventStore:Client` key: - -```json -{ - "Aspire": { - "EventStore": { - "Client": { - "ConnectionString": "esdb://localhost:22113?tls=false", - "DisableHealthChecks": true - } - } - } -} -``` - -### Client integration health checks - -The Aspire EventStore integration uses the configured client to perform a health check. - -## See also - -- [EventStore](https://eventstore.com) -- [EventStore Client](https://github.com/EventStore/EventStore-Client-Dotnet) -- [Aspire Community Toolkit GitHub repo](https://github.com/CommunityToolkit/Aspire) From 367c45fb83b9aa0a2d4bd878a16db910f7b22668 Mon Sep 17 00:00:00 2001 From: David Pine Date: Thu, 20 Nov 2025 06:56:33 -0600 Subject: [PATCH 2/2] Update src/frontend/scripts/update-integrations.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/frontend/scripts/update-integrations.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/frontend/scripts/update-integrations.js b/src/frontend/scripts/update-integrations.js index 5d813ca2..57af6adb 100644 --- a/src/frontend/scripts/update-integrations.js +++ b/src/frontend/scripts/update-integrations.js @@ -15,7 +15,8 @@ const EXCLUDED_PACKAGES = [ 'Aspire.Hosting.NodeJs', 'Aspire.MongoDB.Driver.v3', 'Aspire.RabbitMQ.Client.v7', - 'CommunityToolkit.Aspire.Hosting.EventStore' + 'CommunityToolkit.Aspire.Hosting.EventStore', + 'CommunityToolkit.Aspire.EventStore' ]; const OUTPUT_PATH = './src/data/aspire-integrations.json'; const OUTPUT_NAME_PATH = './src/data/aspire-integration-names.json';