Create general structures in Mongo and SQL

This commit is contained in:
Sergio Matias Urquin
2025-05-18 15:49:46 -06:00
parent 144a6c14c0
commit c7953250fc
51 changed files with 370 additions and 365 deletions

View File

@@ -1,6 +1,6 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.KeyVault.Input
namespace Core.Blueprint.Application.UsesCases.BlobStorage.Input
{
public class DeleteBlobRequest : Notificator, ICommand
{

View File

@@ -1,6 +1,6 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.KeyVault.Input
namespace Core.Blueprint.Application.UsesCases.BlobStorage.Input
{
public class DownloadBlobRequest : Notificator, ICommand
{

View File

@@ -1,6 +1,6 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.KeyVault.Input
namespace Core.Blueprint.Application.UsesCases.BlobStorage.Input
{
public class GetBlobListRequest : Notificator, ICommand
{

View File

@@ -1,6 +1,6 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.KeyVault.Input
namespace Core.Blueprint.Application.UsesCases.BlobStorage.Input
{
public class UploadBlobRequest : Notificator, ICommand
{

View File

@@ -1,5 +1,5 @@
using Core.Blueprint.Application.UsesCases.BlobStorage.Ports;
using Core.Blueprint.Application.UsesCases.KeyVault.Input;
using Core.Blueprint.Application.UsesCases.BlobStorage.Input;
using Core.Blueprint.Application.UsesCases.BlobStorage.Ports;
using Core.Blueprint.Service.External.Clients;
using Core.Blueprint.Storage;
using FluentValidation;

View File

@@ -1,4 +1,5 @@
using Core.Blueprint.Application.UsesCases.KeyVault.Input;
using Core.Blueprint.Application.UsesCases.BlobStorage.Input;
using Core.Blueprint.Application.UsesCases.KeyVault.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.KeyVault.Validator

View File

@@ -1,4 +1,5 @@
using Core.Blueprint.Application.UsesCases.KeyVault.Input;
using Core.Blueprint.Application.UsesCases.BlobStorage.Input;
using Core.Blueprint.Application.UsesCases.KeyVault.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.KeyVault.Validator

View File

@@ -1,4 +1,5 @@
using Core.Blueprint.Application.UsesCases.KeyVault.Input;
using Core.Blueprint.Application.UsesCases.BlobStorage.Input;
using Core.Blueprint.Application.UsesCases.KeyVault.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.KeyVault.Validator

View File

@@ -4,7 +4,7 @@ using Core.Blueprint.Service.External.Clients.Adapters;
using Lib.Architecture.BuildingBlocks;
using Microsoft.AspNetCore.Mvc;
namespace Core.Blueprint.Application.UsesCases.MongoStorage.Adapter
namespace Core.Blueprint.Application.UsesCases.KeyVault.Adapter
{
public class KeyVaultPort : BasePresenter, IKeyVaultPort
{

View File

@@ -3,15 +3,15 @@ using Core.Blueprint.Service.External.Clients.Adapters;
using Lib.Architecture.BuildingBlocks;
using Microsoft.AspNetCore.Mvc;
namespace Core.Blueprint.Application.UsesCases.MongoStorage.Adapter
namespace Core.Blueprint.Application.UsesCases.Mongo.Adapter
{
public class MongoPort : BasePresenter, IMongoPort
{
public void Success(BlueprintAdapter output)
public void Success(MongoSampleAdapter output)
{
ViewModel = new OkObjectResult(output);
}
public void Success(List<BlueprintAdapter> output)
public void Success(List<MongoSampleAdapter> output)
{
ViewModel = new OkObjectResult(output);
}

View File

@@ -2,7 +2,7 @@
namespace Core.Blueprint.Application.UsesCases.Mongo.Input
{
public class CreateBlueprintRequest : Notificator, ICommand
public class CreateMongoSampleRequest : Notificator, ICommand
{
public string Name { get; set; } = null!;

View File

@@ -2,7 +2,7 @@
namespace Core.Blueprint.Application.UsesCases.Mongo.Input
{
public class DeleteBlueprintRequest : Notificator, ICommand
public class DeleteMongoSampleRequest : Notificator, ICommand
{
public string _Id { get; set; }

View File

@@ -2,7 +2,7 @@
namespace Core.Blueprint.Application.UsesCases.Mongo.Input
{
public class GetAllBlueprintsRequest : Notificator, ICommand
public class GetAllMongoSamplesRequest : Notificator, ICommand
{
public bool Validate()
{

View File

@@ -2,7 +2,7 @@
namespace Core.Blueprint.Application.UsesCases.Mongo.Input
{
public class GetBlueprintRequest : Notificator, ICommand
public class GetMongoSampleRequest : Notificator, ICommand
{
public string _Id { get; set; }

View File

@@ -3,7 +3,7 @@ using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.Mongo.Input
{
public class UpdateBlueprintRequest : Notificator, ICommand
public class UpdateMongoSampleRequest : Notificator, ICommand
{
public string Name { get; set; } = null!;
public string? Description { get; set; }

View File

@@ -7,57 +7,57 @@ using FluentValidation;
using Lib.Architecture.BuildingBlocks;
using Lib.Architecture.BuildingBlocks.Helpers;
namespace Core.Cerberos.Application.UseCases.Blueprints
namespace Core.Blueprint.Application.UsesCases.Mongo
{
public class MongoHandler :
IComponentHandler<CreateBlueprintRequest>,
IComponentHandler<GetBlueprintRequest>,
IComponentHandler<GetAllBlueprintsRequest>,
IComponentHandler<UpdateBlueprintRequest>,
IComponentHandler<DeleteBlueprintRequest>
IComponentHandler<CreateMongoSampleRequest>,
IComponentHandler<GetMongoSampleRequest>,
IComponentHandler<GetAllMongoSamplesRequest>,
IComponentHandler<UpdateMongoSampleRequest>,
IComponentHandler<DeleteMongoSampleRequest>
{
private readonly IMongoPort _port;
private readonly IValidator<CreateBlueprintRequest> _createBlueprintValidator;
private readonly IValidator<GetBlueprintRequest> _getBlueprintValidator;
private readonly IValidator<UpdateBlueprintRequest> _updateBlueprintValidator;
private readonly IValidator<DeleteBlueprintRequest> _deleteBlueprintValidator;
private readonly IBlueprintServiceClient _mongoDALService;
private readonly IValidator<CreateMongoSampleRequest> _createSampleValidator;
private readonly IValidator<GetMongoSampleRequest> _getSampleValidator;
private readonly IValidator<UpdateMongoSampleRequest> _updateSampleValidator;
private readonly IValidator<DeleteMongoSampleRequest> _deleteSampleValidator;
private readonly IBlueprintServiceClient _blueprintServiceClient;
public MongoHandler(
IMongoPort port,
IValidator<CreateBlueprintRequest> createBlueprintValidator,
IValidator<GetBlueprintRequest> getBlueprintValidator,
IValidator<UpdateBlueprintRequest> updateBlueprintValidator,
IValidator<DeleteBlueprintRequest> deleteBlueprintValidator,
IBlueprintServiceClient mongoDALService)
IValidator<CreateMongoSampleRequest> createSampleValidator,
IValidator<GetMongoSampleRequest> getSampleValidator,
IValidator<UpdateMongoSampleRequest> updateSampleValidator,
IValidator<DeleteMongoSampleRequest> deleteSampleValidator,
IBlueprintServiceClient blueprintServiceClient)
{
_port = port ?? throw new ArgumentNullException(nameof(port));
_createBlueprintValidator = createBlueprintValidator ?? throw new ArgumentNullException(nameof(createBlueprintValidator));
_getBlueprintValidator = getBlueprintValidator ?? throw new ArgumentNullException(nameof(getBlueprintValidator));
_updateBlueprintValidator = updateBlueprintValidator ?? throw new ArgumentNullException(nameof(updateBlueprintValidator));
_deleteBlueprintValidator = deleteBlueprintValidator ?? throw new ArgumentNullException(nameof(deleteBlueprintValidator));
_mongoDALService = mongoDALService ?? throw new ArgumentNullException(nameof(mongoDALService));
_createSampleValidator = createSampleValidator ?? throw new ArgumentNullException(nameof(createSampleValidator));
_getSampleValidator = getSampleValidator ?? throw new ArgumentNullException(nameof(getSampleValidator));
_updateSampleValidator = updateSampleValidator ?? throw new ArgumentNullException(nameof(updateSampleValidator));
_deleteSampleValidator = deleteSampleValidator ?? throw new ArgumentNullException(nameof(deleteSampleValidator));
_blueprintServiceClient = blueprintServiceClient ?? throw new ArgumentNullException(nameof(blueprintServiceClient));
}
public async ValueTask ExecuteAsync(CreateBlueprintRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(CreateMongoSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
if (!command.IsValid(_createBlueprintValidator))
if (!command.IsValid(_createSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var request = new BlueprintRequest
var request = new MongoSampleRequest
{
Name = command.Name,
Description = command.Description,
};
var result = await _mongoDALService.CreateBlueprintAsync(request, cancellationToken).ConfigureAwait(false);
var result = await _blueprintServiceClient.CreateMongoSampleAsync(request, cancellationToken).ConfigureAwait(false);
if (result == null)
{
@@ -73,13 +73,13 @@ namespace Core.Cerberos.Application.UseCases.Blueprints
}
}
public async ValueTask ExecuteAsync(GetAllBlueprintsRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(GetAllMongoSamplesRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
var _result = await _mongoDALService.GetAllBlueprintsAsync().ConfigureAwait(false);
var _result = await _blueprintServiceClient.GetAllMongoSamplesAsync().ConfigureAwait(false);
if (!_result.Any())
{
_port.NoContentSuccess();
@@ -93,19 +93,19 @@ namespace Core.Cerberos.Application.UseCases.Blueprints
}
}
public async ValueTask ExecuteAsync(GetBlueprintRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(GetMongoSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
if (!command.IsValid(_getBlueprintValidator))
if (!command.IsValid(_getSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var result = await _mongoDALService.GetBlueprintByIdAsync(command._Id, cancellationToken).ConfigureAwait(false);
var result = await _blueprintServiceClient.GetMongoSampleByIdAsync(command._Id, cancellationToken).ConfigureAwait(false);
if (result == null)
{
@@ -122,19 +122,19 @@ namespace Core.Cerberos.Application.UseCases.Blueprints
}
public async ValueTask ExecuteAsync(UpdateBlueprintRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(UpdateMongoSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
if (!command.IsValid(_updateBlueprintValidator))
if (!command.IsValid(_updateSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var request = new BlueprintAdapter
var request = new MongoSampleAdapter
{
Id = command.Id,
_Id = command._Id,
@@ -149,7 +149,7 @@ namespace Core.Cerberos.Application.UseCases.Blueprints
string _id = command._Id;
var result = await _mongoDALService.UpdateBlueprintAsync(_id, request, cancellationToken).ConfigureAwait(false);
var result = await _blueprintServiceClient.UpdateMongoSampleAsync(_id, request, cancellationToken).ConfigureAwait(false);
if (result == null)
{
@@ -166,19 +166,19 @@ namespace Core.Cerberos.Application.UseCases.Blueprints
}
public async ValueTask ExecuteAsync(DeleteBlueprintRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(DeleteMongoSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
if (!command.IsValid(_deleteBlueprintValidator))
if (!command.IsValid(_deleteSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var result = await _mongoDALService.DeleteBlueprintAsync(command._Id, cancellationToken).ConfigureAwait(false);
var result = await _blueprintServiceClient.DeleteMongoSampleAsync(command._Id, cancellationToken).ConfigureAwait(false);
if (result == null)
{

View File

@@ -4,8 +4,8 @@ using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.Mongo.Ports
{
public interface IMongoPort : IBasePort,
ICommandSuccessPort<BlueprintAdapter>,
ICommandSuccessPort<List<BlueprintAdapter>>,
ICommandSuccessPort<MongoSampleAdapter>,
ICommandSuccessPort<List<MongoSampleAdapter>>,
INoContentPort, IBusinessErrorPort, ITimeoutPort, IValidationErrorPort,
INotFoundPort, IForbiddenPort, IUnauthorizedPort, IInternalServerErrorPort,
IBadRequestPort

View File

@@ -1,13 +0,0 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Blueprints.Validator
{
public class CreateBlueprintValidator : AbstractValidator<CreateBlueprintRequest>
{
public CreateBlueprintValidator()
{
RuleFor(i => i.Name).NotEmpty().NotNull().OverridePropertyName(x => x.Name).WithName("Blueprint Name").WithMessage("Blueprint Name is Obligatory.");
}
}
}

View File

@@ -0,0 +1,13 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Mongo.Validator
{
public class CreateMongoSampleValidator : AbstractValidator<CreateMongoSampleRequest>
{
public CreateMongoSampleValidator()
{
RuleFor(i => i.Name).NotEmpty().NotNull().OverridePropertyName(x => x.Name).WithName("Sample Name").WithMessage("Sample Name is Obligatory.");
}
}
}

View File

@@ -1,13 +0,0 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Blueprints.Validator
{
public class DeleteBlueprintValidator : AbstractValidator<DeleteBlueprintRequest>
{
public DeleteBlueprintValidator()
{
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x._Id).WithName("Blueprint Mongo Identifier").WithMessage("Blueprint Mongo Identifier is Obligatory.");
}
}
}

View File

@@ -0,0 +1,13 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Mongo.Validator
{
public class DeleteMongoSampleValidator : AbstractValidator<DeleteMongoSampleRequest>
{
public DeleteMongoSampleValidator()
{
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x._Id).WithName("Sample Identifier").WithMessage("Sample Identifier is Obligatory.");
}
}
}

View File

@@ -1,13 +0,0 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Blueprints.Validator
{
public class GetBlueprintValidator : AbstractValidator<GetBlueprintRequest>
{
public GetBlueprintValidator()
{
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x._Id).WithName("Blueprint Mongo Identifier").WithMessage("Blueprint Mongo Identifier is Obligatory.");
}
}
}

View File

@@ -0,0 +1,13 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Mongo.Validator
{
public class GetMongoSampleValidator : AbstractValidator<GetMongoSampleRequest>
{
public GetMongoSampleValidator()
{
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x._Id).WithName("Sample Identifier").WithMessage("Sample Identifier is Obligatory.");
}
}
}

View File

@@ -1,17 +0,0 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Blueprints.Validator
{
public class UpdateBlueprintValidator : AbstractValidator<UpdateBlueprintRequest>
{
public UpdateBlueprintValidator()
{
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x._Id).WithName("Blueprint Mongo Identifier").WithMessage("Blueprint Mongo Identifier is Obligatory.");
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("Blueprint GUID").WithMessage("Blueprint GUID is Obligatory.");
RuleFor(i => i.Name).NotEmpty().NotNull().OverridePropertyName(x => x.Name).WithName("Blueprint Name").WithMessage("Blueprint Name is Obligatory.");
RuleFor(i => i.Status).NotNull().OverridePropertyName(x => x.Status).WithName("Blueprint Status").WithMessage("Blueprint Status is Obligatory.");
RuleFor(i => i.CreatedAt).NotNull().OverridePropertyName(x => x.CreatedAt).WithName("Blueprint CreatedAt").WithMessage("Blueprint CreatedAt is Obligatory.");
}
}
}

View File

@@ -0,0 +1,17 @@
using Core.Blueprint.Application.UsesCases.Mongo.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.Mongo.Validator
{
public class UpdateMongoSampleValidator : AbstractValidator<UpdateMongoSampleRequest>
{
public UpdateMongoSampleValidator()
{
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x._Id).WithName("Sample Identifier").WithMessage("Sample Identifier is Obligatory.");
RuleFor(i => i._Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("Sample GUID").WithMessage("Sample GUID is Obligatory.");
RuleFor(i => i.Name).NotEmpty().NotNull().OverridePropertyName(x => x.Name).WithName("Sample Name").WithMessage("Sample Name is Obligatory.");
RuleFor(i => i.Status).NotNull().OverridePropertyName(x => x.Status).WithName("Sample Status").WithMessage("Sample Status is Obligatory.");
RuleFor(i => i.CreatedAt).NotNull().OverridePropertyName(x => x.CreatedAt).WithName("Sample CreatedAt").WithMessage("Sample CreatedAt is Obligatory.");
}
}
}

View File

@@ -7,11 +7,11 @@ namespace Core.Blueprint.Application.UsesCases.SQL.Adapter
{
public class SQLPort : BasePresenter, ISQLPort
{
public void Success(UserProjectAdapter output)
public void Success(SqlSampleAdapter output)
{
ViewModel = new OkObjectResult(output);
}
public void Success(List<UserProjectAdapter> output)
public void Success(List<SqlSampleAdapter> output)
{
ViewModel = new OkObjectResult(output);
}

View File

@@ -0,0 +1,15 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.SQL.Input
{
public class CreateSqlSampleRequest : Notificator, ICommand
{
public string Name { get; set; } = null!;
public string Description { get; set; } = null!;
public bool Validate()
{
return Name != null && Name != string.Empty;
}
}
}

View File

@@ -1,16 +0,0 @@
using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.SQL.Input
{
public class CreateUserProjectRequest : Notificator, ICommand
{
public string ProjectCode { get; set; } = null!;
public string ProjectDescription { get; set; } = null!;
public string UserId { get; set; } = null!;
public bool Validate()
{
return ProjectCode != null && ProjectCode != string.Empty;
}
}
}

View File

@@ -2,7 +2,7 @@
namespace Core.Blueprint.Application.UsesCases.SQL.Input
{
public class DeleteUserProjectRequest : Notificator, ICommand
public class DeleteSqlSampleRequest : Notificator, ICommand
{
public int Id { get; set; }

View File

@@ -2,7 +2,7 @@
namespace Core.Blueprint.Application.UsesCases.SQL.Input
{
public class GetAllUserProjectsRequest : Notificator, ICommand
public class GetAllSqlSamplesRequest : Notificator, ICommand
{
public bool Validate()
{

View File

@@ -2,7 +2,7 @@
namespace Core.Blueprint.Application.UsesCases.SQL.Input
{
public class GetUserProjectRequest : Notificator, ICommand
public class GetSqlSampleRequest : Notificator, ICommand
{
public int Id { get; set; }

View File

@@ -3,11 +3,10 @@ using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.SQL.Input
{
public class UpdateUserProjectRequest : Notificator, ICommand
public class UpdateSqlSampleRequest : Notificator, ICommand
{
public string ProjectCode { get; set; } = null!;
public string ProjectDescription { get; set; } = null!;
public string UserId { get; set; } = null!;
public string Name { get; set; } = null!;
public string Description { get; set; } = null!;
public int Id { get; set; }
public string Guid { get; set; } = null!;
public DateTime CreatedAt { get; set; }

View File

@@ -4,8 +4,8 @@ using Lib.Architecture.BuildingBlocks;
namespace Core.Blueprint.Application.UsesCases.SQL.Ports
{
public interface ISQLPort : IBasePort,
ICommandSuccessPort<UserProjectAdapter>,
ICommandSuccessPort<List<UserProjectAdapter>>,
ICommandSuccessPort<SqlSampleAdapter>,
ICommandSuccessPort<List<SqlSampleAdapter>>,
INoContentPort, IBusinessErrorPort, ITimeoutPort, IValidationErrorPort,
INotFoundPort, IForbiddenPort, IUnauthorizedPort, IInternalServerErrorPort,
IBadRequestPort

View File

@@ -7,58 +7,57 @@ using FluentValidation;
using Lib.Architecture.BuildingBlocks;
using Lib.Architecture.BuildingBlocks.Helpers;
namespace Core.Cerberos.Application.UseCases.UserProjects
namespace Core.Blueprint.Application.UsesCases.SQL
{
public class SQLHandler :
IComponentHandler<CreateUserProjectRequest>,
IComponentHandler<GetUserProjectRequest>,
IComponentHandler<GetAllUserProjectsRequest>,
IComponentHandler<UpdateUserProjectRequest>,
IComponentHandler<DeleteUserProjectRequest>
IComponentHandler<CreateSqlSampleRequest>,
IComponentHandler<GetSqlSampleRequest>,
IComponentHandler<GetAllSqlSamplesRequest>,
IComponentHandler<UpdateSqlSampleRequest>,
IComponentHandler<DeleteSqlSampleRequest>
{
private readonly ISQLPort _port;
private readonly IValidator<CreateUserProjectRequest> _createUserProjectValidator;
private readonly IValidator<GetUserProjectRequest> _getUserProjectValidator;
private readonly IValidator<UpdateUserProjectRequest> _updateUserProjectValidator;
private readonly IValidator<DeleteUserProjectRequest> _deleteUserProjectValidator;
private readonly IValidator<CreateSqlSampleRequest> _createSampleValidator;
private readonly IValidator<GetSqlSampleRequest> _getSampleValidator;
private readonly IValidator<UpdateSqlSampleRequest> _updateSampleValidator;
private readonly IValidator<DeleteSqlSampleRequest> _deleteSampleValidator;
private readonly IBlueprintServiceClient _SQLDALService;
public SQLHandler(
ISQLPort port,
IValidator<CreateUserProjectRequest> createUserProjectValidator,
IValidator<GetUserProjectRequest> getUserProjectValidator,
IValidator<UpdateUserProjectRequest> updateUserProjectValidator,
IValidator<DeleteUserProjectRequest> deleteUserProjectValidator,
IValidator<CreateSqlSampleRequest> createSampleValidator,
IValidator<GetSqlSampleRequest> getSampleValidator,
IValidator<UpdateSqlSampleRequest> updateSampleValidator,
IValidator<DeleteSqlSampleRequest> deleteSampleValidator,
IBlueprintServiceClient SQLDALService)
{
_port = port ?? throw new ArgumentNullException(nameof(port));
_createUserProjectValidator = createUserProjectValidator ?? throw new ArgumentNullException(nameof(createUserProjectValidator));
_getUserProjectValidator = getUserProjectValidator ?? throw new ArgumentNullException(nameof(getUserProjectValidator));
_updateUserProjectValidator = updateUserProjectValidator ?? throw new ArgumentNullException(nameof(updateUserProjectValidator));
_deleteUserProjectValidator = deleteUserProjectValidator ?? throw new ArgumentNullException(nameof(deleteUserProjectValidator));
_createSampleValidator = createSampleValidator ?? throw new ArgumentNullException(nameof(createSampleValidator));
_getSampleValidator = getSampleValidator ?? throw new ArgumentNullException(nameof(getSampleValidator));
_updateSampleValidator = updateSampleValidator ?? throw new ArgumentNullException(nameof(updateSampleValidator));
_deleteSampleValidator = deleteSampleValidator ?? throw new ArgumentNullException(nameof(deleteSampleValidator));
_SQLDALService = SQLDALService ?? throw new ArgumentNullException(nameof(SQLDALService));
}
public async ValueTask ExecuteAsync(CreateUserProjectRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(CreateSqlSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
if (!command.IsValid(_createUserProjectValidator))
if (!command.IsValid(_createSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var request = new UserProjectRequest
var request = new SqlSampleRequest
{
ProjectCode = command.ProjectCode,
ProjectDescription = command.ProjectDescription,
UserId = command.UserId,
Name = command.Name,
Description = command.Description,
};
var result = await _SQLDALService.CreateUserProjectAsync(request, cancellationToken).ConfigureAwait(false);
var result = await _SQLDALService.CreateSqlSampleAsync(request, cancellationToken).ConfigureAwait(false);
if (result == null)
{
@@ -74,13 +73,13 @@ namespace Core.Cerberos.Application.UseCases.UserProjects
}
}
public async ValueTask ExecuteAsync(GetAllUserProjectsRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(GetAllSqlSamplesRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
var _result = await _SQLDALService.GetAllUserProjectsAsync().ConfigureAwait(false);
var _result = await _SQLDALService.GetAllSqlSamplesAsync().ConfigureAwait(false);
if (!_result.Any())
{
_port.NoContentSuccess();
@@ -94,13 +93,19 @@ namespace Core.Cerberos.Application.UseCases.UserProjects
}
}
public async ValueTask ExecuteAsync(GetUserProjectRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(GetSqlSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
var result = await _SQLDALService.GetUserProjectByIdAsync(command.Id, cancellationToken).ConfigureAwait(false);
if (!command.IsValid(_getSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var result = await _SQLDALService.GetSqlSampleByIdAsync(command.Id, cancellationToken).ConfigureAwait(false);
if (result == null)
{
@@ -117,25 +122,24 @@ namespace Core.Cerberos.Application.UseCases.UserProjects
}
public async ValueTask ExecuteAsync(UpdateUserProjectRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(UpdateSqlSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
if (!command.IsValid(_updateUserProjectValidator))
if (!command.IsValid(_updateSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var request = new UserProjectAdapter
var request = new SqlSampleAdapter
{
Id = command.Id,
Guid = command.Guid,
UserId = command.UserId,
ProjectCode = command.ProjectCode,
ProjectDescription = command.ProjectDescription,
ProjectCode = command.Name,
ProjectDescription = command.Description,
CreatedAt = command.CreatedAt,
CreatedBy = command.CreatedBy,
UpdatedAt = command.UpdatedAt,
@@ -145,7 +149,7 @@ namespace Core.Cerberos.Application.UseCases.UserProjects
int id = command.Id;
var result = await _SQLDALService.UpdateUserProjectAsync(id, request, cancellationToken).ConfigureAwait(false);
var result = await _SQLDALService.UpdateSqlSampleAsync(id, request, cancellationToken).ConfigureAwait(false);
if (result == null)
{
@@ -162,19 +166,19 @@ namespace Core.Cerberos.Application.UseCases.UserProjects
}
public async ValueTask ExecuteAsync(DeleteUserProjectRequest command, CancellationToken cancellationToken = default)
public async ValueTask ExecuteAsync(DeleteSqlSampleRequest command, CancellationToken cancellationToken = default)
{
try
{
ArgumentNullException.ThrowIfNull(command);
if (!command.IsValid(_deleteUserProjectValidator))
if (!command.IsValid(_deleteSampleValidator))
{
_port.ValidationErrors(command.Notifications);
return;
}
var result = await _SQLDALService.DeleteUserProjectAsync(command.Id, cancellationToken).ConfigureAwait(false);
var result = await _SQLDALService.DeleteSqlSampleAsync(command.Id, cancellationToken).ConfigureAwait(false);
if (result == null)
{

View File

@@ -0,0 +1,14 @@
using Core.Blueprint.Application.UsesCases.SQL.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.SQL.Validator
{
public class CreateSqlSampleValidator : AbstractValidator<CreateSqlSampleRequest>
{
public CreateSqlSampleValidator()
{
RuleFor(i => i.Name).NotEmpty().NotNull().OverridePropertyName(x => x.Name).WithName("Sample Name").WithMessage("Sample Name is Obligatory.");
RuleFor(i => i.Description).NotEmpty().NotNull().OverridePropertyName(x => x.Description).WithName("Sample Description").WithMessage("Sample Description is Obligatory.");
}
}
}

View File

@@ -1,15 +0,0 @@
using Core.Blueprint.Application.UsesCases.SQL.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.SQL.Validator
{
public class CreateUserProjectValidator : AbstractValidator<CreateUserProjectRequest>
{
public CreateUserProjectValidator()
{
RuleFor(i => i.ProjectCode).NotEmpty().NotNull().OverridePropertyName(x => x.ProjectCode).WithName("Project Code").WithMessage("Project Code is Obligatory.");
RuleFor(i => i.ProjectDescription).NotEmpty().NotNull().OverridePropertyName(x => x.ProjectDescription).WithName("Project Description").WithMessage("Project Description is Obligatory.");
RuleFor(i => i.UserId).NotEmpty().NotNull().OverridePropertyName(x => x.UserId).WithName("User Identifier").WithMessage("User Identifier is Obligatory.");
}
}
}

View File

@@ -3,11 +3,11 @@ using FluentValidation;
namespace Core.Cerberos.Application.UseCases.SQL.Validator
{
public class GetUserProjectValidator : AbstractValidator<GetUserProjectRequest>
public class DeleteSqlSampleValidator : AbstractValidator<DeleteSqlSampleRequest>
{
public GetUserProjectValidator()
public DeleteSqlSampleValidator()
{
RuleFor(i => i.Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("User Project Identifier").WithMessage("User Project Identifier is Obligatory.");
RuleFor(i => i.Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("Sample Identifier").WithMessage("Sample Identifier is Obligatory.");
}
}
}

View File

@@ -1,13 +0,0 @@
using Core.Blueprint.Application.UsesCases.SQL.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.SQL.Validator
{
public class DeleteUserProjectValidator : AbstractValidator<DeleteUserProjectRequest>
{
public DeleteUserProjectValidator()
{
RuleFor(i => i.Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("User Project Identifier").WithMessage("User Project Identifier is Obligatory.");
}
}
}

View File

@@ -0,0 +1,13 @@
using Core.Blueprint.Application.UsesCases.SQL.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.SQL.Validator
{
public class GetSqlSampleValidator : AbstractValidator<GetSqlSampleRequest>
{
public GetSqlSampleValidator()
{
RuleFor(i => i.Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("Sample Identifier").WithMessage("Sample Identifier is Obligatory.");
}
}
}

View File

@@ -0,0 +1,18 @@
using Core.Blueprint.Application.UsesCases.SQL.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.SQL.Validator
{
public class UpdateSqlSampleValidator : AbstractValidator<UpdateSqlSampleRequest>
{
public UpdateSqlSampleValidator()
{
RuleFor(i => i.Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("Sample Identifier").WithMessage("UserPoject Identifier is Obligatory.");
RuleFor(i => i.Guid).NotEmpty().NotNull().OverridePropertyName(x => x.Guid).WithName("Sample GUID").WithMessage("Sample GUID is Obligatory.");
RuleFor(i => i.Name).NotEmpty().NotNull().OverridePropertyName(x => x.Name).WithName("Sample Name").WithMessage("Sample Name is Obligatory.");
RuleFor(i => i.Description).NotEmpty().NotNull().OverridePropertyName(x => x.Description).WithName("Project Description").WithMessage("Project Description is Obligatory.");
RuleFor(i => i.Status).NotNull().OverridePropertyName(x => x.Status).WithName("Sample Status").WithMessage("Sample Status is Obligatory.");
RuleFor(i => i.CreatedAt).NotNull().OverridePropertyName(x => x.CreatedAt).WithName("Sample CreatedAt").WithMessage("Sample CreatedAt is Obligatory.");
}
}
}

View File

@@ -1,19 +0,0 @@
using Core.Blueprint.Application.UsesCases.SQL.Input;
using FluentValidation;
namespace Core.Cerberos.Application.UseCases.SQL.Validator
{
public class UpdateUserProjectValidator : AbstractValidator<UpdateUserProjectRequest>
{
public UpdateUserProjectValidator()
{
RuleFor(i => i.Id).NotEmpty().NotNull().OverridePropertyName(x => x.Id).WithName("UserProject Identifier").WithMessage("UserPoject Identifier is Obligatory.");
RuleFor(i => i.Guid).NotEmpty().NotNull().OverridePropertyName(x => x.Guid).WithName("UserProject GUID").WithMessage("UserProject GUID is Obligatory.");
RuleFor(i => i.ProjectCode).NotEmpty().NotNull().OverridePropertyName(x => x.ProjectCode).WithName("Project Code").WithMessage("Project Code is Obligatory.");
RuleFor(i => i.ProjectDescription).NotEmpty().NotNull().OverridePropertyName(x => x.ProjectDescription).WithName("Project Description").WithMessage("Project Description is Obligatory.");
RuleFor(i => i.UserId).NotEmpty().NotNull().OverridePropertyName(x => x.UserId).WithName("User Identifier").WithMessage("User Identifier is Obligatory.");
RuleFor(i => i.Status).NotNull().OverridePropertyName(x => x.Status).WithName("UserProject Status").WithMessage("UserProject Status is Obligatory.");
RuleFor(i => i.CreatedAt).NotNull().OverridePropertyName(x => x.CreatedAt).WithName("UserProject CreatedAt").WithMessage("UserProject CreatedAt is Obligatory.");
}
}
}