diff options
| author | crupest <crupest@outlook.com> | 2022-12-18 20:07:29 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2022-12-20 20:32:53 +0800 | 
| commit | 2efc4f7ea0784a504ce50207a19a8899a121f8cd (patch) | |
| tree | 705eac7dd02e4335816a4b048b1b14d08cea24a4 /docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud | |
| parent | 8b7bbe2b70f25bc493bf11bd4d0e484e65d22523 (diff) | |
| download | crupest-2efc4f7ea0784a504ce50207a19a8899a121f8cd.tar.gz crupest-2efc4f7ea0784a504ce50207a19a8899a121f8cd.tar.bz2 crupest-2efc4f7ea0784a504ce50207a19a8899a121f8cd.zip  | |
Develop secret api. v42
Diffstat (limited to 'docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud')
3 files changed, 22 insertions, 10 deletions
diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs index d371c84..184ac0a 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudService.cs @@ -20,15 +20,20 @@ public class CrudService<TEntity> : IDisposable where TEntity : class          _jsonHelper = jsonHelper;          _logger = loggerFactory.CreateLogger<CrudService<TEntity>>(); -        if (!_table.CheckExistence(_dbConnection)) -        { -            DoInitializeDatabase(_dbConnection); -        } +        CheckDatabase(_dbConnection);      }      public EntityJsonHelper<TEntity> JsonHelper => _jsonHelper; -    public virtual void DoInitializeDatabase(IDbConnection connection) +    protected virtual void CheckDatabase(IDbConnection dbConnection) +    { +        if (!_table.CheckExistence(dbConnection)) +        { +            DoInitializeDatabase(dbConnection); +        } +    } + +    private void DoInitializeDatabase(IDbConnection connection)      {          using var transaction = connection.BeginTransaction();          connection.Execute(_table.GenerateCreateTableSql(), transaction: transaction); @@ -59,7 +64,7 @@ public class CrudService<TEntity> : IDisposable where TEntity : class          return (string)key;      } -    public void Update(object key, JsonElement jsonElement) +    public void UpdateByKey(object key, JsonElement jsonElement)      {          var updateClauses = _jsonHelper.ConvertJsonElementToUpdateClause(jsonElement);          _table.Update(_dbConnection, WhereClause.Create().Eq(_table.KeyColumn.ColumnName, key), updateClauses); diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs index 8854976..d51c0a1 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudServiceCollectionExtensions.cs @@ -12,13 +12,19 @@ public static class CrudServiceCollectionExtensions          return services;      } -    public static IServiceCollection AddCrud<TEntity>(this IServiceCollection services) where TEntity : class +    public static IServiceCollection AddCrud<TEntity, TCrudService>(this IServiceCollection services) where TEntity : class where TCrudService : CrudService<TEntity>      {          AddCrudCore(services); -        services.TryAddScoped<CrudService<TEntity>>(); +        services.TryAddScoped<CrudService<TEntity>, TCrudService>();          services.TryAddScoped<EntityJsonHelper<TEntity>>();          return services;      } + +    public static IServiceCollection AddCrud<TEntity>(this IServiceCollection services) where TEntity : class +    { +        return services.AddCrud<TEntity, CrudService<TEntity>>(); +    } +  } diff --git a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs index 7331273..9e85c68 100644 --- a/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs +++ b/docker/crupest-api/CrupestApi/CrupestApi.Commons/Crud/CrudWebApplicationExtensions.cs @@ -2,10 +2,11 @@ namespace CrupestApi.Commons.Crud;  public static class CrudWebApplicationExtensions  { -    public static WebApplication UseCrud<TEntity>(this WebApplication app, string path) where TEntity : class +    public static WebApplication UseCrud<TEntity>(this WebApplication app, string path, string? key) where TEntity : class      {          app.MapGet(path, async (context) =>          { +                          var crudService = context.RequestServices.GetRequiredService<CrudService<TEntity>>();              var allEntities = crudService.GetAll();              await context.ResponseJsonAsync(allEntities.Select(e => crudService.JsonHelper.ConvertEntityToDictionary(e))); @@ -44,7 +45,7 @@ public static class CrudWebApplicationExtensions              }              var jsonDocument = await context.Request.ReadJsonAsync(); -            crudService.Update(key, jsonDocument.RootElement); +            crudService.UpdateByKey(key, jsonDocument.RootElement);              await context.ResponseJsonAsync(crudService.JsonHelper.ConvertEntityToDictionary(crudService.GetByKey(key)));          });  | 
