deletions update

This commit is contained in:
Вячеслав 2025-05-20 15:59:55 +05:00
parent 6f8ef78577
commit 7bbcd07c39
10 changed files with 71 additions and 22 deletions

View file

@ -4,5 +4,5 @@ namespace SurveyLib.Core.Repositories;
public interface IAnswerRepository : IGenericRepository<Answer>
{
Task DeleteAsync(int questionId, int completionId);
}

View file

@ -8,5 +8,5 @@ public interface IGenericRepository<T> where T : class
Task<IEnumerable<T>> GetAllAsync();
Task AddAsync(T entity);
Task UpdateAsync(T entity);
Task DeleteAsync(T entity);
Task DeleteAsync(int id);
}

View file

@ -7,12 +7,14 @@ namespace SurveyLib.Infrastructure.EFCore.Data;
public class SurveyDbContext : DbContext
{
public DbSet<Survey> Surveys { get; set; }
public DbSet<QuestionBase> Questions { get; set; }
public DbSet<SingleAnswerQuestion> SingleAnswerQuestions { get; set; }
public DbSet<MultipleAnswerQuestion> MultipleAnswerQuestions { get; set; }
public DbSet<TextQuestion> TextQuestions { get; set; }
public DbSet<AnswerVariant> AnswerVariants { get; set; }
public DbSet<Completion> Completions { get; set; }
public DbSet<Answer> Answers { get; set; }

View file

@ -36,9 +36,15 @@ public class AnswerRepository : IAnswerRepository
await _context.SaveChangesAsync();
}
public async Task DeleteAsync(Answer entity)
public async Task DeleteAsync(int id)
{
_context.Answers.Remove(entity);
throw new NotImplementedException();
}
public async Task DeleteAsync(int questionId, int completionId)
{
await _context.Answers.Where(a => a.QuestionId == questionId && a.CompletionId == completionId)
.ExecuteDeleteAsync();
await _context.SaveChangesAsync();
}
}

View file

@ -0,0 +1,49 @@
using Microsoft.EntityFrameworkCore;
using SurveyLib.Core.Models;
using SurveyLib.Core.Repositories;
using SurveyLib.Infrastructure.EFCore.Data;
namespace SurveyLib.Infrastructure.EFCore.Repositories;
public class AnswerVariantsRepository : IAnswerVariantsRepository
{
private readonly SurveyDbContext _context;
public AnswerVariantsRepository(SurveyDbContext context)
{
_context = context;
}
public async Task<AnswerVariant?> GetByIdAsync(int id)
{
return await _context.AnswerVariants.FindAsync(id);
}
public async Task<IEnumerable<AnswerVariant>> GetAllAsync()
{
return await _context.AnswerVariants.ToListAsync();
}
public async Task AddAsync(AnswerVariant entity)
{
await _context.AnswerVariants.AddAsync(entity);
await _context.SaveChangesAsync();
}
public async Task UpdateAsync(AnswerVariant entity)
{
_context.AnswerVariants.Update(entity);
await _context.SaveChangesAsync();
}
public async Task DeleteAsync(int id)
{
await _context.AnswerVariants.Where(av => av.Id == id).ExecuteDeleteAsync();
await _context.SaveChangesAsync();
}
public async Task<IEnumerable<AnswerVariant>> GetAnswerVariantsByQuestionIdAsync(int questionId)
{
return await _context.AnswerVariants.Where(av => av.QuestionId == questionId).ToListAsync();
}
}

View file

@ -36,9 +36,9 @@ public class CompletionRepository : ICompletionRepository
await _context.SaveChangesAsync();
}
public async Task DeleteAsync(Completion entity)
public async Task DeleteAsync(int id)
{
_context.Completions.Remove(entity);
await _context.Completions.Where(c => c.Id == id).ExecuteDeleteAsync();
await _context.SaveChangesAsync();
}
}

View file

@ -36,9 +36,9 @@ public class QuestionRepository : IQuestionRepository
await _context.SaveChangesAsync();
}
public async Task DeleteAsync(QuestionBase entity)
public async Task DeleteAsync(int id)
{
_context.Questions.Remove(entity);
await _context.Questions.Where(q => q.Id == id).ExecuteDeleteAsync();
await _context.SaveChangesAsync();
}

View file

@ -36,9 +36,9 @@ public class SurveyRepository : ISurveyRepository
await _context.SaveChangesAsync();
}
public async Task DeleteAsync(Survey entity)
public async Task DeleteAsync(int id)
{
_context.Surveys.Remove(entity);
await _context.Surveys.Where(s => s.Id == id).ExecuteDeleteAsync();
await _context.SaveChangesAsync();
}

View file

@ -25,9 +25,7 @@ public class QuestionService : IQuestionService
public async Task DeleteQuestionAsync(int id)
{
var question = await GetQuestionByIdAsync(id);
await _questionRepository.DeleteAsync(question);
await _questionRepository.DeleteAsync(id);
}
public async Task<QuestionBase> GetQuestionByIdAsync(int id)

View file

@ -25,13 +25,7 @@ public class SurveyService : ISurveyService
public async Task DeleteSurveyAsync(int id)
{
var survey = await _surveyRepository.GetByIdAsync(id);
if (survey == null)
{
throw new NullReferenceException($"Survey with id: {id} was not found");
}
await _surveyRepository.DeleteAsync(survey);
await _surveyRepository.DeleteAsync(id);
}
public async Task<IEnumerable<Survey>> GetSurveysAsync()