ClickHouse.Facades
2.5.9
dotnet add package ClickHouse.Facades --version 2.5.9
NuGet\Install-Package ClickHouse.Facades -Version 2.5.9
<PackageReference Include="ClickHouse.Facades" Version="2.5.9" />
<PackageVersion Include="ClickHouse.Facades" Version="2.5.9" />
<PackageReference Include="ClickHouse.Facades" />
paket add ClickHouse.Facades --version 2.5.9
#r "nuget: ClickHouse.Facades, 2.5.9"
#addin nuget:?package=ClickHouse.Facades&version=2.5.9
#tool nuget:?package=ClickHouse.Facades&version=2.5.9
ClickHouse.Facades
Raw SQL migrations and contexts for ClickHouse referencing ClickHouse.Client. Production tested.
Key Features
- Migrations: allows you to perform raw SQL migrations on your ClickHouse database.
- Rollback support
- Fully async contract
- Migration template for .NET CLI
- Contexts: provides a way to work with ClickHouse contexts, allowing you to organize your database operations in a structured manner.
- Context-specific migrations, allowing separate migration management for distinct packages or components
- Parametrized queries (anonymous type parameters supported)
- Query cancellation by termination on ClickHouse side
- Transactions support (keeper is required)
- Retryable contexts
- Dapper compatibility (reader deserialization)
- Provides all the features of the ClickHouse.Client package
- Fully async contract
- Testing toolkit: provides tools for unit testing components of ClickHouse.Facades with the dedicated ClickHouse.Facades.Testing package.
- Facades mocking
- Specific requests mocking and tracking
- Comprehensive documentation presented in repository Wiki.
Migrations Usage
Implement IClickHouseMigrationInstructions
and IClickHouseMigrationsLocator
(example)
and register them as DI services
services.AddClickHouseMigrations<ClickHouseMigrationInstructions, ClickHouseMigrationsLocator>();
You can request IClickHouseMigrator
service or use IServiceProviderExtensions
to manage migrations
await serviceProvider.ClickHouseMigrateAsync();
Add Migrations
Add ClickHouseMigration
inheritor with ClickHouseMigration
attribute
[ClickHouseMigration(202310240941, "ExampleMigration")]
public class ExampleMigration : ClickHouseMigration
{
protected override void Up(ClickHouseMigrationBuilder migrationBuilder)
{
// migrationBuilder.AddRawSqlStatement("create table if not exists ...")
}
protected override void Down(ClickHouseMigrationBuilder migrationBuilder)
{
// migrationBuilder.AddRawSqlStatement("drop table if exists ...")
}
}
The index of ClickHouseMigrationAttribute
is used to order migrations. It's best to always use idempotent statements (for example with if [not] exists
) since migration may fail.
Context Usage
Implement the following class inheritors: ClickHouseContext<TContext>
, ClickHouseContextFactory<TContext>
, ClickHouseFacade<TContext>
(example)
and register them as DI services
services.AddClickHouseContext<ExampleContext, ExampleContextFactory>(builder => builder
.AddFacade<UsersFacade>()
.AddFacade<OrdersFacade>());
Request IClickHouseContextFactory<TContext>
service to create context
await using var context = await contextFactory.CreateContextAsync();
var ordersFacade = context.GetFacade<OrdersFacade>();
await ordersFacade.GetOrders();
You can create as many contexts as you need with any number of facades. Facades are built via DI and are stateful within context lifetime.
[!NOTE] You can perform migrations on your ClickHouse database without the necessity of implementing contexts.
Examples
For a deeper understanding and practical use cases of how to implement migrations and facades, please refer to the examples folder provided in the repository.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- ClickHouse.Client (>= 7.13.1)
- System.Linq.Async (>= 6.0.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on ClickHouse.Facades:
Package | Downloads |
---|---|
ClickHouse.Facades.Testing
Provides tools for unit testing ClickHouse.Facades components |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.5.9 | 528 | 13 days ago |
2.5.8 | 215 | a month ago |
2.5.7 | 183 | a month ago |
2.5.6 | 128 | a month ago |
2.5.5 | 123 | 2 months ago |
2.5.4 | 182 | 5 months ago |
2.5.3 | 222 | 6 months ago |
2.5.2 | 863 | 6 months ago |
2.5.1 | 153 | 7 months ago |
2.4.2 | 148 | 7 months ago |
2.4.1 | 98 | 8 months ago |
2.3.1 | 130 | 9 months ago |
2.2.2 | 280 | 9 months ago |
2.2.1 | 166 | 10 months ago |
2.1.3 | 163 | 10 months ago |
2.1.2 | 153 | 10 months ago |
2.1.1 | 141 | 6/6/2024 |
2.0.1 | 150 | 6/4/2024 |
1.2.1 | 179 | 6/2/2024 |
1.1.2 | 156 | 5/19/2024 |
1.1.1 | 129 | 5/14/2024 |
1.0.8 | 174 | 4/18/2024 |
1.0.7 | 160 | 4/17/2024 |
1.0.6 | 165 | 3/26/2024 |
1.0.5 | 157 | 3/21/2024 |
1.0.4 | 193 | 2/22/2024 |
1.0.3 | 163 | 2/5/2024 |
1.0.2 | 279 | 11/2/2023 |
1.0.1 | 165 | 11/2/2023 |
1.0.0 | 143 | 10/26/2023 |