From 468ddba9090b037840b50b66457ac905ad45d863 Mon Sep 17 00:00:00 2001 From: shept Date: Thu, 13 Mar 2025 01:06:12 +0500 Subject: [PATCH 1/2] started defining repository interfaces --- SurveyLib.Core/Repositories/IGenericRepository.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 SurveyLib.Core/Repositories/IGenericRepository.cs diff --git a/SurveyLib.Core/Repositories/IGenericRepository.cs b/SurveyLib.Core/Repositories/IGenericRepository.cs new file mode 100644 index 0000000..f4e0492 --- /dev/null +++ b/SurveyLib.Core/Repositories/IGenericRepository.cs @@ -0,0 +1,10 @@ +namespace SurveyLib.Core.Repositories; + +public interface IGenericRepository where T : class +{ + Task? GetByIdAsync(int id); + Task> GetAllAsync(); + Task AddAsync(T entity); + Task UpdateAsync(T entity); + Task DeleteAsync(T entity); +} \ No newline at end of file From 18840fc22443b9a68f0965781e3fac690d9460ec Mon Sep 17 00:00:00 2001 From: shept Date: Fri, 14 Mar 2025 22:20:08 +0500 Subject: [PATCH 2/2] added repository interfaces for all models added Completion model --- SurveyLib.Core/Models/Answer.cs | 5 ++--- SurveyLib.Core/Models/Completion.cs | 10 ++++++++++ SurveyLib.Core/Models/QuestionBase.cs | 2 +- SurveyLib.Core/Models/Survey.cs | 2 +- SurveyLib.Core/Repositories/IAnswerRepository.cs | 9 +++++++++ SurveyLib.Core/Repositories/ICompletionRepository.cs | 8 ++++++++ SurveyLib.Core/Repositories/IGenericRepository.cs | 2 +- SurveyLib.Core/Repositories/IQuestionRepository.cs | 9 +++++++++ SurveyLib.Core/Repositories/ISurveyRepository.cs | 10 ++++++++++ 9 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 SurveyLib.Core/Models/Completion.cs create mode 100644 SurveyLib.Core/Repositories/IAnswerRepository.cs create mode 100644 SurveyLib.Core/Repositories/ICompletionRepository.cs create mode 100644 SurveyLib.Core/Repositories/IQuestionRepository.cs create mode 100644 SurveyLib.Core/Repositories/ISurveyRepository.cs diff --git a/SurveyLib.Core/Models/Answer.cs b/SurveyLib.Core/Models/Answer.cs index 676f4a3..d95d799 100644 --- a/SurveyLib.Core/Models/Answer.cs +++ b/SurveyLib.Core/Models/Answer.cs @@ -2,11 +2,10 @@ namespace SurveyLib.Core.Models; public class Answer { - public int TryId { get; set; } - public int SurveyId { get; set; } + public int CompletionId { get; set; } public int QuestionId { get; set; } public string AnswerText { get; set; } - public Survey Survey { get; set; } + public Completion Completion { get; set; } public QuestionBase Question { get; set; } } \ No newline at end of file diff --git a/SurveyLib.Core/Models/Completion.cs b/SurveyLib.Core/Models/Completion.cs new file mode 100644 index 0000000..4c6fde2 --- /dev/null +++ b/SurveyLib.Core/Models/Completion.cs @@ -0,0 +1,10 @@ +namespace SurveyLib.Core.Models; + +public class Completion +{ + public int Id { get; set; } + public int SurveyId { get; set; } + public DateTime FinishedAt { get; set; } + + public Survey Survey { get; set; } +} \ No newline at end of file diff --git a/SurveyLib.Core/Models/QuestionBase.cs b/SurveyLib.Core/Models/QuestionBase.cs index 822dd75..4f2f581 100644 --- a/SurveyLib.Core/Models/QuestionBase.cs +++ b/SurveyLib.Core/Models/QuestionBase.cs @@ -2,7 +2,7 @@ namespace SurveyLib.Core.Models; public class QuestionBase { - public int Id { get; set; } // TODO: А ведь их наверное много будет, вдруг int однажды не хватит... + public int Id { get; set; } public int SurveyId { get; set; } public string Title { get; set; } diff --git a/SurveyLib.Core/Models/Survey.cs b/SurveyLib.Core/Models/Survey.cs index e41e948..c35cdd4 100644 --- a/SurveyLib.Core/Models/Survey.cs +++ b/SurveyLib.Core/Models/Survey.cs @@ -7,5 +7,5 @@ public class Survey public string Description { get; set; } public ICollection Questions { get; set; } - public ICollection Answers { get; set; } + public ICollection Completions { get; set; } } \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/IAnswerRepository.cs b/SurveyLib.Core/Repositories/IAnswerRepository.cs new file mode 100644 index 0000000..7766933 --- /dev/null +++ b/SurveyLib.Core/Repositories/IAnswerRepository.cs @@ -0,0 +1,9 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface IAnswerRepository : IGenericRepository +{ + Task> GetByAttemptIdAsync(int attemptId); + Task> GetByQuestionIdAsync(int questionId); +} \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/ICompletionRepository.cs b/SurveyLib.Core/Repositories/ICompletionRepository.cs new file mode 100644 index 0000000..8145c1c --- /dev/null +++ b/SurveyLib.Core/Repositories/ICompletionRepository.cs @@ -0,0 +1,8 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface ICompletionRepository : IGenericRepository +{ + Task> GetBySurveyIdAsync(int surveyId); +} \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/IGenericRepository.cs b/SurveyLib.Core/Repositories/IGenericRepository.cs index f4e0492..071416f 100644 --- a/SurveyLib.Core/Repositories/IGenericRepository.cs +++ b/SurveyLib.Core/Repositories/IGenericRepository.cs @@ -7,4 +7,4 @@ public interface IGenericRepository where T : class Task AddAsync(T entity); Task UpdateAsync(T entity); Task DeleteAsync(T entity); -} \ No newline at end of file +} diff --git a/SurveyLib.Core/Repositories/IQuestionRepository.cs b/SurveyLib.Core/Repositories/IQuestionRepository.cs new file mode 100644 index 0000000..d8ecf6c --- /dev/null +++ b/SurveyLib.Core/Repositories/IQuestionRepository.cs @@ -0,0 +1,9 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface IQuestionRepository : IGenericRepository +{ + Task GetWithAnswersAsync(int questionId); + Task> GetBySurveyIdAsync(int surveyId); +} \ No newline at end of file diff --git a/SurveyLib.Core/Repositories/ISurveyRepository.cs b/SurveyLib.Core/Repositories/ISurveyRepository.cs new file mode 100644 index 0000000..795c26d --- /dev/null +++ b/SurveyLib.Core/Repositories/ISurveyRepository.cs @@ -0,0 +1,10 @@ +using SurveyLib.Core.Models; + +namespace SurveyLib.Core.Repositories; + +public interface ISurveyRepository : IGenericRepository +{ + Task GetWithQuestionsAsync(int surveyId); + Task GetWithCompletionsAsync(int surveyId); + Task FindByTitleAsync(string title); +} \ No newline at end of file