Add sample in mongo and sql layers

This commit is contained in:
Sergio Matias Urquin
2025-05-18 14:38:54 -06:00
parent ca35645488
commit 10f2083590
18 changed files with 248 additions and 250 deletions

View File

@@ -0,0 +1,82 @@
using Core.Blueprint.DAL.SQLServer;
using Core.Blueprint.DAL.SQLServer.Context;
using Core.Blueprint.DAL.SQLServer.Contracts;
using Core.Blueprint.DAL.SQLServer.Entities;
using Core.Blueprint.DAL.SQLServer.Entities.Request;
using Core.Blueprint.Redis;
using Core.Blueprint.Redis.Helpers;
using Mapster;
using Microsoft.Extensions.Options;
public class SqlSampleService : ISqlSampleService
{
private readonly IEntityRepository<Sample, SqlServerContext> _sqlSampleRepository;
private readonly CacheSettings cacheSettings;
private readonly IRedisCacheProvider cacheProvider;
public SqlSampleService(IEntityRepository<Sample, SqlServerContext> sqlSampleRepository, IRedisCacheProvider cacheProvider, IOptions<CacheSettings> cacheSettings)
{
_sqlSampleRepository = sqlSampleRepository;
this.cacheSettings = cacheSettings.Value;
this.cacheProvider = cacheProvider;
}
public async Task<IEnumerable<Sample>> GetAllSamples()
{
var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllSamples");
var cachedData = await cacheProvider.GetAsync<IEnumerable<Sample>>(cacheKey) ?? [];
if (cachedData.Any()) return cachedData;
var samples = await _sqlSampleRepository.GetAllAsync();
await cacheProvider.SetAsync(cacheKey, samples);
return samples;
}
public async Task<Sample?> GetSampleById(int id)
{
var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetSampleById", id);
var cachedData = await cacheProvider.GetAsync<Sample>(cacheKey);
if (cachedData is not null) { return cachedData; }
var sample = await _sqlSampleRepository.GetByIdAsync(id);
await cacheProvider.SetAsync(cacheKey, sample);
return sample;
}
public async Task<Sample> AddSample(SampleRequest newSample)
{
var sample = newSample.Adapt<Sample>();
await _sqlSampleRepository.AddAsync(sample);
await _sqlSampleRepository.SaveAsync();
return sample;
}
public async Task<Sample?> UpdateSample(Sample sample)
{
var existingEntity = await _sqlSampleRepository.GetByIdAsync(sample.Id);
if (existingEntity is null) return existingEntity;
_sqlSampleRepository.Update(sample);
await _sqlSampleRepository.SaveAsync();
return sample;
}
public async Task<Sample?> DeleteSample(int id)
{
var sample = await _sqlSampleRepository.GetByIdAsync(id);
if (sample == null)
return null;
_sqlSampleRepository.Delete(sample);
await _sqlSampleRepository.SaveAsync();
return sample;
}
}

View File

@@ -1,82 +0,0 @@
using Core.Blueprint.DAL.SQLServer;
using Core.Blueprint.DAL.SQLServer.Context;
using Core.Blueprint.DAL.SQLServer.Contracts;
using Core.Blueprint.DAL.SQLServer.Entities;
using Core.Blueprint.DAL.SQLServer.Entities.Request;
using Core.Blueprint.Redis;
using Core.Blueprint.Redis.Helpers;
using Mapster;
using Microsoft.Extensions.Options;
public class UserProjectService : IUserProjectService
{
private readonly IEntityRepository<UserProject, SqlServerContext> _userProjectRepository;
private readonly CacheSettings cacheSettings;
private readonly IRedisCacheProvider cacheProvider;
public UserProjectService(IEntityRepository<UserProject, SqlServerContext> userProjectRepository, IRedisCacheProvider cacheProvider, IOptions<CacheSettings> cacheSettings)
{
_userProjectRepository = userProjectRepository;
this.cacheSettings = cacheSettings.Value;
this.cacheProvider = cacheProvider;
}
public async Task<IEnumerable<UserProject>> GetAllUserProjects()
{
var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUserProjects");
var cachedData = await cacheProvider.GetAsync<IEnumerable<UserProject>>(cacheKey) ?? [];
if (cachedData.Any()) return cachedData;
var userProjects = await _userProjectRepository.GetAllAsync();
await cacheProvider.SetAsync(cacheKey, userProjects);
return userProjects;
}
public async Task<UserProject?> GetUserProjectById(int id)
{
var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserProjectById", id);
var cachedData = await cacheProvider.GetAsync<UserProject>(cacheKey);
if (cachedData is not null) { return cachedData; }
var userProject = await _userProjectRepository.GetByIdAsync(id);
await cacheProvider.SetAsync(cacheKey, userProject);
return userProject;
}
public async Task<UserProject> AddUserProject(UserProjectRequest newUserProject)
{
var userProject = newUserProject.Adapt<UserProject>();
await _userProjectRepository.AddAsync(userProject);
await _userProjectRepository.SaveAsync();
return userProject;
}
public async Task<UserProject?> UpdateUserProject(UserProject userProject)
{
var existingEntity = await _userProjectRepository.GetByIdAsync(userProject.Id);
if (existingEntity is null) return existingEntity;
_userProjectRepository.Update(userProject);
await _userProjectRepository.SaveAsync();
return userProject;
}
public async Task<UserProject?> DeleteUserProject(int id)
{
var userProject = await _userProjectRepository.GetByIdAsync(id);
if (userProject == null)
return null;
_userProjectRepository.Delete(userProject);
await _userProjectRepository.SaveAsync();
return userProject;
}
}