Refactor GetOrCreateCommand and add AutoMapper profile

Refactored the `GetOrCreateCommand` to simplify the creation
of `Endpoint` entities by delegating the creation logic to
`repo.CreateAsync`.

Added a new `MappingProfile` class using AutoMapper to define
mappings between command objects (`CreateEndpointCommand` and
`GetOrCreateCommand`) and the `Endpoint` entity, improving
code maintainability and reducing boilerplate.

Included necessary `using` directives in `MappingProfile.cs`
to support the new mapping functionality.
This commit is contained in:
tekh 2025-12-01 15:47:58 +01:00
parent 4d6df7ccc8
commit 46664d62ba
2 changed files with 19 additions and 6 deletions

View File

@ -1,7 +1,6 @@
using DigitalData.Core.Abstraction.Application.Repository; using DigitalData.Core.Abstraction.Application.Repository;
using MediatR; using MediatR;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ReC.Domain.Entities;
namespace ReC.Application.Endpoints.Commands; namespace ReC.Application.Endpoints.Commands;
@ -19,11 +18,7 @@ public class GetOrCreateCommandHandler(IRepository<Endpoint> repo) : IRequestHan
if (endpoint is not null) if (endpoint is not null)
return endpoint; return endpoint;
endpoint = new Endpoint endpoint = await repo.CreateAsync(request, cancel);
{
Uri = request.Uri
};
await repo.CreateAsync(endpoint, cancel);
return endpoint; return endpoint;
} }
} }

View File

@ -0,0 +1,18 @@
using AutoMapper;
using ReC.Application.Endpoints.Commands;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ReC.Application.Endpoints;
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<CreateEndpointCommand, Endpoint>();
CreateMap<GetOrCreateCommand, Endpoint>();
}
}