AndroThink.Data.Harmonizer.Web.UI
1.1.4
dotnet add package AndroThink.Data.Harmonizer.Web.UI --version 1.1.4
NuGet\Install-Package AndroThink.Data.Harmonizer.Web.UI -Version 1.1.4
<PackageReference Include="AndroThink.Data.Harmonizer.Web.UI" Version="1.1.4" />
<PackageVersion Include="AndroThink.Data.Harmonizer.Web.UI" Version="1.1.4" />
<PackageReference Include="AndroThink.Data.Harmonizer.Web.UI" />
paket add AndroThink.Data.Harmonizer.Web.UI --version 1.1.4
#r "nuget: AndroThink.Data.Harmonizer.Web.UI, 1.1.4"
#:package AndroThink.Data.Harmonizer.Web.UI@1.1.4
#addin nuget:?package=AndroThink.Data.Harmonizer.Web.UI&version=1.1.4
#tool nuget:?package=AndroThink.Data.Harmonizer.Web.UI&version=1.1.4
AndroThink.Data.Harmonizer.Web.UI 
AndroThink.Data.Harmonizer.Web.UI is a powerful .NET library designed to streamline data synchronization and reporting across multiple database providers. It provides a plug-and-play architecture for managing complex data ecosystems with built-in support for SQLite, SQL Server, and PostgreSQL.
🚀 Features
- Multi-Provider Support: Seamlessly switch between SQLite, SQL Server, and PostgreSQL via configuration.
- Automated Migrations: Simplified database initialization and migration management.
- Data Seeding: Built-in support for seeding initial synchronization system configurations.
- Reporting Services: Specialized services for generating and managing sync reports.
- Flexible Registration: Register the entire harmonizer suite with a single line of code.
🛠 Installation
Currently, this library is packaged as a Razor Class Library (RCL) or standard NuGet package. To use it, add the reference to your project:
dotnet add package AndroThink.Data.Harmonizer.Web.UI
⚙️ Configuration
The library support varies slightly depending on the database type you choose.
- Valid Providers
AndroThink.Data.Harmonizer.SQLiteAndroThink.Data.Harmonizer.SQLServerAndroThink.Data.Harmonizer.PostgreSQL
SQLite Configuration
{
"SyncDatabase": {
"Type": "SQLite",
"Configuration": {
"DbPath": "Data/Harmonizer.db",
"SensitiveDataLogging": true,
"DbLogFilePath": "Logs/db_sync.log"
}
}
}
PostgreSQL Configuration
{
"SyncDatabase": {
"Type": "PostgreSQL",
"Configuration": {
"Host": "localhost",
"Port": 5432,
"DatabaseName": "HarmonizerDb",
"Username": "postgres",
"Password": "your_password",
"SensitiveDataLogging": false,
"SslMode": "Disable"
}
}
}
SQL Server Configuration
{
"SyncDatabase": {
"Type": "SQLServer",
"Configuration": {
"Server": ".",
"DatabaseName": "HarmonizerDb",
"Username": "sa",
"Password": "your_password",
"SensitiveDataLogging": true
}
}
}
Example:
using AndroThink.Data.Harmonizer.Core;
var builder = WebApplication.CreateBuilder(args);
// Register Core services
builder.Services.AddDataHarmonizer();
// Register specific provider
builder.Services.AddDataHarmonizerPostgreSQL(..);
// Example: Manual SQLite registration
builder.Services.AddDataHarmonizerSQLite(new SQLiteConfiguration {
DbPath = "my_custom_path.db",
SensitiveDataLogging = true
});
// At runtime, add a provider-specific package (e.g., AndroThink.Data.Harmonizer.SQLite, AndroThink.Data.Harmonizer.SQLServer, AndroThink.Data.Harmonizer.PostgreSQL)
📑 Usage
Register Services In your Program.cs, use the AddDataHarmonizer[Provider] extension method. This will automatically detect your database type from the configuration and register all necessary services.
var builder = WebApplication.CreateBuilder(args);
// register services
builder.Services.AddControllersWithViews();
// Example: Manual SQLite registration
builder.Services.AddDataHarmonizerSQLite(new SQLiteConfiguration {
DbPath = "my_custom_path.db",
SensitiveDataLogging = true
});
var app = builder.Build();
// run migrations + seeding
app.UseDataHarmonizer(new List<SyncSystem>
{
new SyncSystem { Name = "Main Reporting Hub", BaseUrl = "https://api.reports.local" }
});
// configure pipeline
app.UseRouting();
app.MapControllers();
app.Run();
🕹 Built-in Management API
AndroThink.Data.Harmonizer includes built-in controllers that provide a ready-to-use API for managing your synchronization and reporting ecosystem. Since the library is built as a Razor Class Library (RCL), these endpoints are integrated directly into your hosting application.
📡 API Endpoints
The library exposes the following RESTful endpoints to manage the reporting and synchronization lifecycle. By default, these are prefixed with /sync.
| Endpoint | Method | Description |
|---|---|---|
| /sync | GET | Base endpoint for triggering or checking the status of the harmonization process. |
| /sync/reports | GET | Retrieves logs, history, and generated data reports from the reporting database. |
| /sync/systems | GET | Manages the configuration of external systems (URLs, Names, and Connection states). |
🛠 Integration Tip: Routing
If your main application already uses a /sync route, you can adjust the library's routing behavior by using an Attribute Route or a Global Route Prefix in your hosting project.
To ensure the library's controllers are correctly mapped, verify your MapControllers configuration in Program.cs:
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // Required for /sync, /sync/reports, etc.
});
// or just use
app.MapDefaultControllerRoute();
app.Run();
Note: This library uses a custom IModelCacheKeyFactory(HarmonizerModelCacheKeyFactory) to handle dynamic schema adjustments during runtime, ensuring that reporting structures remain consistent across different sync sessions.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. 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 is compatible. 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 is compatible. 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 is compatible. 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. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net6.0
- AndroThink.Data.Harmonizer.Core (>= 1.1.1)
-
net7.0
- AndroThink.Data.Harmonizer.Core (>= 1.1.1)
-
net8.0
- AndroThink.Data.Harmonizer.Core (>= 1.1.1)
-
net9.0
- AndroThink.Data.Harmonizer.Core (>= 1.1.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.