using Dpz.Core.Public.ViewModel.Request;
using Dpz.Core.Public.ViewModel.Response;
namespace Dpz.Core.Service.RepositoryServiceImpl;
public class AudioService(IRepository<Audio> repository, IMapper mapper) : IAudioService
{
public async Task<AudioResponse> AddAsync(CreateAudioRequest request)
{
ArgumentNullException.ThrowIfNull(request);
ArgumentNullException.ThrowIfNull(request.Uploader);
ArgumentNullException.ThrowIfNull(request.AccessUrl);
var entity = mapper.Map<Audio>(request);
await repository.InsertAsync(entity);
return mapper.Map<AudioResponse>(entity);
}
public async Task<AudioResponse?> FindAsync(string id)
{
return mapper.Map<AudioResponse>(await repository.TryGetAsync(id));
}
public async Task<IPagedList<AudioResponse>> GetPagesAsync(
int pageIndex,
int pageSize,
VmUserInfo? uploader = null
)
{
var predicate = repository.SearchFor(x => true);
if (uploader != null)
{
predicate = predicate.Where(x => x.Uploader.Id == uploader.Id);
}
return await predicate
.OrderByDescending(x => x.UploadTime)
.ToPagedListAsync<Audio, AudioResponse>(pageIndex, pageSize);
}
public async Task DeleteAsync(string id)
{
await repository.TryDeleteAsync(id);
}
}
评论加载中...