change energy rate energy rate exception and energy provider query to dynamic query to pass parameters
This commit is contained in:
parent
0ba2e45b38
commit
6fee86170b
@ -6,8 +6,7 @@ namespace CH.CQRS.Query.CryptoStat;
|
||||
|
||||
public class CryptoStatQuery
|
||||
{
|
||||
// public required string CoinName { get; set; }
|
||||
// public required string Currency { get; set; }
|
||||
|
||||
}
|
||||
public class CryptoStatQueryHandler(CoinMarketCapService coinMarketCapService) : IQueryHandler<CryptoStatQuery, CryptoStatQueryResult>
|
||||
{
|
||||
|
16
CH.CQRS/Query/EnergyProvider/EnergyProviderQueriesModule.cs
Normal file
16
CH.CQRS/Query/EnergyProvider/EnergyProviderQueriesModule.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using CH.Dal;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using OpenHarbor.CQRS.DynamicQuery;
|
||||
using PoweredSoft.Module.Abstractions;
|
||||
|
||||
namespace CH.CQRS.Query.EnergyProvider;
|
||||
|
||||
public class EnergyProviderQueriesModule : IModule
|
||||
{
|
||||
public IServiceCollection ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddDynamicQuery<EnergyProviderQueryItem>()
|
||||
.AddQueryableProviderOverride<EnergyProviderQueryItem, EnergyProviderQueryableProvider>();
|
||||
return services;
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
using CH.Dal;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using OpenHarbor.CQRS.Abstractions;
|
||||
using PoweredSoft.DynamicLinq;
|
||||
|
||||
namespace CH.CQRS.Query.EnergyProvider;
|
||||
|
||||
@ -8,15 +9,46 @@ public class EnergyProviderQuery
|
||||
{
|
||||
|
||||
}
|
||||
public class EnergyProviderQueryHandler(CHDbContext dbContext) : IQueryHandler<EnergyProviderQuery, EnergyProviderQueryResult>
|
||||
|
||||
public class EnergyProviderQueryItem
|
||||
{
|
||||
public async Task<EnergyProviderQueryResult> HandleAsync(EnergyProviderQuery query, CancellationToken cancellationToken = new CancellationToken())
|
||||
{
|
||||
var energyProviders = await dbContext.EnergyProviders.ToListAsync(cancellationToken);
|
||||
var energyProviderQueryResult = new EnergyProviderQueryResult
|
||||
{
|
||||
Data = energyProviders
|
||||
};
|
||||
return energyProviderQueryResult;
|
||||
public long Id { get; set; }
|
||||
|
||||
public string Name { get; set; } = null!;
|
||||
|
||||
public bool Active { get; set; }
|
||||
|
||||
public DateTime? DisabledAt { get; set; }
|
||||
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
}
|
||||
|
||||
public class EnergyRateQueryParams
|
||||
{
|
||||
|
||||
}
|
||||
public class EnergyProviderQueryableProvider(CHDbContext dbContext) : IQueryableProviderOverride<EnergyProviderQueryItem>
|
||||
{
|
||||
public async Task<IQueryable<EnergyProviderQueryItem>> GetQueryableAsync(object query, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var queryable = dbContext.EnergyProviders
|
||||
.AsNoTracking()
|
||||
.AsQueryable();
|
||||
|
||||
var result = queryable
|
||||
.Select(energyProvider => new EnergyProviderQueryItem
|
||||
{
|
||||
Id = energyProvider.Id,
|
||||
Name = energyProvider.Name,
|
||||
Active = energyProvider.Active,
|
||||
DisabledAt = energyProvider.DisabledAt,
|
||||
CreatedAt = energyProvider.CreatedAt,
|
||||
UpdatedAt = energyProvider.UpdatedAt
|
||||
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace CH.CQRS.Query.EnergyProvider;
|
||||
|
||||
public class EnergyProviderQueryResult
|
||||
{
|
||||
public required List<Dal.DbEntity.EnergyProvider> Data { get; set; }
|
||||
}
|
17
CH.CQRS/Query/EnergyRate/EnergyRateQueriesModule.cs
Normal file
17
CH.CQRS/Query/EnergyRate/EnergyRateQueriesModule.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using CH.Dal;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using OpenHarbor.CQRS.DynamicQuery;
|
||||
using PoweredSoft.Module.Abstractions;
|
||||
|
||||
namespace CH.CQRS.Query.EnergyRate;
|
||||
|
||||
public class EnergyRateQueriesModule : IModule
|
||||
{
|
||||
public IServiceCollection ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddDynamicQueryWithParams<EnergyRateQueryItem, EnergyRateQueryParams>()
|
||||
.AddQueryableProviderOverride<EnergyRateQueryItem, EnergyRateQueryableProvider>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
@ -2,22 +2,63 @@ using CH.CQRS.Query.EnergyProvider;
|
||||
using CH.Dal;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using OpenHarbor.CQRS.Abstractions;
|
||||
using OpenHarbor.CQRS.DynamicQuery.Abstractions;
|
||||
|
||||
namespace CH.CQRS.Query.EnergyRate;
|
||||
|
||||
public class EnergyRateQuery
|
||||
{
|
||||
|
||||
}
|
||||
public class EnergyRateQueryHandler(CHDbContext dbContext) : IQueryHandler<EnergyRateQuery, EnergyRateQueryResult>
|
||||
|
||||
public class EnergyRateQueryItem
|
||||
{
|
||||
public async Task<EnergyRateQueryResult> HandleAsync(EnergyRateQuery query, CancellationToken cancellationToken = new CancellationToken())
|
||||
public long Id { get; set; }
|
||||
public long? ProviderId { get; set; }
|
||||
public required string Name { get; set; }
|
||||
public decimal? Rate { get; set; }
|
||||
public bool Active { get; set; }
|
||||
public DateTime? DiabledAt { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
}
|
||||
|
||||
public class EnergyRateQueryParams
|
||||
{
|
||||
public long EnergyProviderId { get; set; }
|
||||
}
|
||||
|
||||
public class EnergyRateQueryableProvider(CHDbContext dbContext) : IQueryableProviderOverride<EnergyRateQueryItem>
|
||||
{
|
||||
public async Task<IQueryable<EnergyRateQueryItem>> GetQueryableAsync(object query, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var energyRates = await dbContext.EnergyRates.ToListAsync(cancellationToken);
|
||||
var energyRateQueryResult = new EnergyRateQueryResult
|
||||
long? energyProviderId = null;
|
||||
if (query is IDynamicQueryParams<EnergyRateQueryParams> queryParams)
|
||||
{
|
||||
Data = energyRates
|
||||
};
|
||||
return energyRateQueryResult;
|
||||
var parameters = queryParams.GetParams();
|
||||
energyProviderId = parameters.EnergyProviderId;
|
||||
}
|
||||
|
||||
if (false == energyProviderId.HasValue)
|
||||
return Enumerable.Empty<EnergyRateQueryItem>().AsQueryable();
|
||||
|
||||
var queryable = dbContext.EnergyRates
|
||||
.AsNoTracking()
|
||||
.AsQueryable();
|
||||
|
||||
var result = queryable
|
||||
.Where(energyRate => energyRate.ProviderId == energyProviderId)
|
||||
.Select(energyRate => new EnergyRateQueryItem
|
||||
{
|
||||
Id = energyRate.Id,
|
||||
ProviderId = energyRate.ProviderId,
|
||||
Name = energyRate.Name,
|
||||
Rate = energyRate.Rate,
|
||||
Active = energyRate.Active,
|
||||
DiabledAt = energyRate.DisabledAt,
|
||||
CreatedAt = energyRate.CreatedAt,
|
||||
UpdatedAt = energyRate.UpdatedAt
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace CH.CQRS.Query.EnergyRate;
|
||||
|
||||
public class EnergyRateQueryResult
|
||||
{
|
||||
public required List<Dal.DbEntity.EnergyRate> Data { get; set; }
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
using CH.Dal;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using OpenHarbor.CQRS.DynamicQuery;
|
||||
using PoweredSoft.Module.Abstractions;
|
||||
|
||||
namespace CH.CQRS.Query.EnergyRateException;
|
||||
|
||||
public class EnergyRateExceptionQueriesModule : IModule
|
||||
{
|
||||
public IServiceCollection ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddDynamicQueryWithParams<EnergyRateExceptionQueryItem, EnergyRateExceptionQueryParams>()
|
||||
.AddQueryableProviderOverride<EnergyRateExceptionQueryItem, EnergyRateExceptionQueryableProvider>();
|
||||
return services;
|
||||
}
|
||||
}
|
@ -1,22 +1,72 @@
|
||||
using CH.CQRS.Query.EnergyProvider;
|
||||
using CH.Dal;
|
||||
using CH.Enum;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using OpenHarbor.CQRS.Abstractions;
|
||||
using OpenHarbor.CQRS.DynamicQuery.Abstractions;
|
||||
|
||||
namespace CH.CQRS.Query.EnergyRateException;
|
||||
|
||||
public class EnergyRateExceptionQuery
|
||||
{
|
||||
|
||||
}
|
||||
public class EnergyRateExceptionQueryHandler(CHDbContext dbContext) : IQueryHandler<EnergyRateExceptionQuery, EnergyRateExceptionQueryResult>
|
||||
|
||||
public class EnergyRateExceptionQueryItem
|
||||
{
|
||||
public async Task<EnergyRateExceptionQueryResult> HandleAsync(EnergyRateExceptionQuery query, CancellationToken cancellationToken = new CancellationToken())
|
||||
public long Id { get; set; }
|
||||
|
||||
public long? RateId { get; set; }
|
||||
|
||||
public string? Name { get; set; }
|
||||
|
||||
public decimal? EnergyThreshold { get; set; }
|
||||
|
||||
public EnergyRateExceptionThresholdResetType ResetType { get; set; }
|
||||
|
||||
public DateTime? StartedAt { get; set; }
|
||||
|
||||
public DateTime? EndedAt { get; set; }
|
||||
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
public DateTime? UpdatedAt { get; set; }
|
||||
}
|
||||
|
||||
public class EnergyRateExceptionQueryParams
|
||||
{
|
||||
public long EnergyRateId { get; set; }
|
||||
}
|
||||
public class EnergyRateExceptionQueryableProvider(CHDbContext dbContext) : IQueryableProviderOverride<EnergyRateExceptionQueryItem>
|
||||
{
|
||||
public async Task<IQueryable<EnergyRateExceptionQueryItem>> GetQueryableAsync(object query, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var energyRateExceptions = await dbContext.EnergyRateExceptions.ToListAsync(cancellationToken);
|
||||
var energyRateExceptionsQueryResult = new EnergyRateExceptionQueryResult
|
||||
long? energyRateId = null;
|
||||
if (query is IDynamicQueryParams<EnergyRateExceptionQueryParams> queryParams)
|
||||
{
|
||||
Data = energyRateExceptions,
|
||||
};
|
||||
return energyRateExceptionsQueryResult;
|
||||
var parameters = queryParams.GetParams();
|
||||
energyRateId = parameters.EnergyRateId;
|
||||
}
|
||||
|
||||
if(false == energyRateId.HasValue)
|
||||
return Enumerable.Empty<EnergyRateExceptionQueryItem>().AsQueryable();
|
||||
|
||||
var queryable = dbContext.EnergyRateExceptions
|
||||
.AsNoTracking()
|
||||
.AsQueryable();
|
||||
|
||||
var result = queryable
|
||||
.Where(energyRateException => energyRateException.RateId == energyRateId)
|
||||
.Select(energyRateException => new EnergyRateExceptionQueryItem
|
||||
{
|
||||
Id = energyRateException.Id,
|
||||
Name = energyRateException.Name,
|
||||
EnergyThreshold = energyRateException.EnergyThreshold,
|
||||
ResetType = energyRateException.ResetType,
|
||||
StartedAt = energyRateException.StartedAt,
|
||||
EndedAt = energyRateException.EndedAt,
|
||||
CreatedAt = energyRateException.CreatedAt,
|
||||
UpdatedAt = energyRateException.UpdatedAt,
|
||||
});
|
||||
return result;
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
namespace CH.CQRS.Query.EnergyRateException;
|
||||
|
||||
public class EnergyRateExceptionQueryResult
|
||||
{
|
||||
public required List<Dal.DbEntity.EnergyRateException> Data { get; set; }
|
||||
}
|
@ -18,10 +18,11 @@ public class QueryModule : IModule
|
||||
public IServiceCollection ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddQuery<HealthQuery, HealthQueryResult, HealthQueryHandler>();
|
||||
services.AddQuery<EnergyProviderQuery, EnergyProviderQueryResult, EnergyProviderQueryHandler>();
|
||||
services.AddQuery<EnergyRateQuery, EnergyRateQueryResult, EnergyRateQueryHandler>();
|
||||
services.AddQuery<EnergyRateExceptionQuery, EnergyRateExceptionQueryResult, EnergyRateExceptionQueryHandler>();
|
||||
services.AddQuery<CryptoStatQuery, CryptoStatQueryResult, CryptoStatQueryHandler>();
|
||||
services.AddModule<EnergyProviderQueriesModule>();
|
||||
services.AddModule<EnergyRateQueriesModule>();
|
||||
services.AddModule<EnergyRateExceptionQueriesModule>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user