namespace {{pascalCase PROJECT_NAME}}.Features.{{pascalCase FEATURE_NAME}}Feature.{{pascalCase SLICE_NAME}};

using {{pascalCase PROJECT_NAME}}.Abstractions;
using {{pascalCase PROJECT_NAME}}.Database;
using {{pascalCase PROJECT_NAME}}.Entities;

public sealed class {{pascalCase SLICE_NAME}}Handler(
    ApplicationDbContext _db) : IHandler<{{pascalCase SLICE_NAME}}Request, Result<{{pascalCase SLICE_NAME}}Response>>
{
    public async Task<Result<{{pascalCase SLICE_NAME}}Response>> HandleAsync({{pascalCase SLICE_NAME}}Request command, CancellationToken cancellationToken)
    {
        var entity = new {{pascalCase FEATURE_NAME}}
        {
            Id = Guid.CreateVersion7(),
            // TODO: Map command properties to entity
        };

        _db.Set<{{pascalCase FEATURE_NAME}}>().Add(entity);
        await _db.SaveChangesAsync(cancellationToken);

        return Result.Success(new {{pascalCase SLICE_NAME}}Response(entity.Id));
    }
}
