RestDWHBase 2.2023.8.24
RestDWH.Base
dotnet add package RestDWHBase --version 2.2023.8.24
NuGet\Install-Package RestDWHBase -Version 2.2023.8.24
<PackageReference Include="RestDWHBase" Version="2.2023.8.24" />
paket add RestDWHBase --version 2.2023.8.24
#r "nuget: RestDWHBase, 2.2023.8.24"
// Install RestDWHBase as a Cake Addin #addin nuget:?package=RestDWHBase&version=2.2023.8.24 // Install RestDWHBase as a Cake Tool #tool nuget:?package=RestDWHBase&version=2.2023.8.24
Rest DWH library
The aim of this library is to provide REST CRUD endpoints for data storage
The enterprise grade level of audit data where all data are queryable and historic modifications with user information and exact timestamps.
Rest DWH library provides data governance platform for fast code first development.
Currently supported DBs:
- elasticsearch
How it works
User defines model and sets attribute RestDWHEntity. The library produces the controllers, the DB object models, and repositories.
using RestDWH.Attributes;
namespace MyApp.Model
{
[RestDWHEntity("Test")]
public class Test
{
public string Name { get; set; }
}
}
This creates Get,GetById,Put,Post,Patch and Delete operations on object Test.
Events
Coder can create custom code in events before or after the data are handled by the controller method or before are stored to the database.
For example
using MyApp.Model;
using RestDWH.Model;
using System.Security.Claims;
namespace MyApp.Events
{
public class TestEvents : RestDWHEvents<Test>
{
public override async Task<(int from, int size, string query, string sort)> BeforeGetAsync(int from = 0, int size = 10, string query = "*", string sort = "", ClaimsPrincipal? user = null)
{
return (from, size, query, sort);
}
public override async Task<DBBase<Test>> ToCreate(DBBase<Test> item, ClaimsPrincipal? user = null)
{
return item;
}
public override async Task<DBBase<Test>> AfterDeleteAsync(DBBase<Test> result, string id, ClaimsPrincipal? user = null)
{
return result;
}
}
}
To tell the RestDWH you use this events for model test, reference your event class in the attribute.
using MyApp.Events;
using RestDWH.Attributes;
namespace MyApp.Model
{
[RestDWHEntity("Test", typeof(TestEvents))]
public class Test
{
public string Name { get; set; }
}
}
Installation
using RestDWH.Base.Extensions;
...
builder.Services.AddAuthentication(...)
...
# use ExtendElasticConnectionSettings to add default mapping to the db objects
var settings =
new ConnectionSettings(new Uri(".."))
.ApiKeyAuthentication(new ApiKeyAuthenticationCredentials(".."))
.ExtendElasticConnectionSettings();
...
var client = new ElasticClient(settings);
builder.Services.AddSingleton<IElasticClient>(client);
...
# use RegisterRestDWHRepositories to register repositories and events
builder.Services.AddSingleton<IDWHRepository<Model.Test>, RestDWHElasticSearchRepository<Model.Test>>();
builder.Services.AddSingleton<RestDWHEvents<Model.Test>>();
...
app.UseAuthentication();
app.UseAuthorization();
...
var service = app.Services.GetService<IDWHRepository<Model.Test>>();
app.MapEndpoints<Model.Test>(service);
...
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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 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. |
-
net7.0
- Microsoft.AspNetCore.Authorization (>= 7.0.10)
- Microsoft.AspNetCore.JsonPatch (>= 7.0.10)
- Microsoft.AspNetCore.OpenApi (>= 7.0.10)
- Swashbuckle.AspNetCore (>= 6.5.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on RestDWHBase:
Package | Downloads |
---|---|
RestDWHElastic
Data governance platform for fast code first development. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
2.2023.8.24 | 200 | 8/23/2023 |