From eab5db823b473db1e90b7eb8c39ac9080c968f8d Mon Sep 17 00:00:00 2001 From: Nikolai Papin Date: Mon, 29 Sep 2025 16:58:19 +0300 Subject: [PATCH] feat: repositories --- Database/UnitOfWork/UnitOfWork.cs | 65 ++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/Database/UnitOfWork/UnitOfWork.cs b/Database/UnitOfWork/UnitOfWork.cs index e143fbe..61e02cc 100644 --- a/Database/UnitOfWork/UnitOfWork.cs +++ b/Database/UnitOfWork/UnitOfWork.cs @@ -1,3 +1,5 @@ +using GamificationService.Database.GenericRepository; +using GamificationService.Models.Database; using Microsoft.EntityFrameworkCore.Storage; namespace GamificationService.Database.UnitOfWork; @@ -8,6 +10,22 @@ public class UnitOfWork : IUnitOfWork private readonly ApplicationContext _context; private IDbContextTransaction? _transaction; + // Repository fields + private IGenericRepository? _rankRepository; + private IGenericRepository? _skillRepository; + private IGenericRepository? _playerRepository; + private IGenericRepository? _missionCategoryRepository; + private IGenericRepository? _missionRepository; + private IGenericRepository? _missionRankRuleRepository; + private IGenericRepository? _missionSkillRewardRepository; + private IGenericRepository? _missionItemRewardRepository; + private IGenericRepository? _rankMissionRuleRepository; + private IGenericRepository? _rankSkillRuleRepository; + private IGenericRepository? _playerSkillRepository; + private IGenericRepository? _playerMissionRepository; + private IGenericRepository? _dialogueRepository; + private IGenericRepository? _dialogueMessageRepository; + private IGenericRepository? _dialogueMessageResponseOptionRepository; #endregion public UnitOfWork(ApplicationContext context) @@ -16,6 +34,50 @@ public class UnitOfWork : IUnitOfWork } #region Repositories + public IGenericRepository Ranks => + _rankRepository ??= new GenericRepository(_context); + + public IGenericRepository Skills => + _skillRepository ??= new GenericRepository(_context); + + public IGenericRepository Players => + _playerRepository ??= new GenericRepository(_context); + + public IGenericRepository MissionCategories => + _missionCategoryRepository ??= new GenericRepository(_context); + + public IGenericRepository Missions => + _missionRepository ??= new GenericRepository(_context); + + public IGenericRepository MissionRankRules => + _missionRankRuleRepository ??= new GenericRepository(_context); + + public IGenericRepository MissionSkillRewards => + _missionSkillRewardRepository ??= new GenericRepository(_context); + + public IGenericRepository MissionItemRewards => + _missionItemRewardRepository ??= new GenericRepository(_context); + + public IGenericRepository RankMissionRules => + _rankMissionRuleRepository ??= new GenericRepository(_context); + + public IGenericRepository RankSkillRules => + _rankSkillRuleRepository ??= new GenericRepository(_context); + + public IGenericRepository PlayerSkills => + _playerSkillRepository ??= new GenericRepository(_context); + + public IGenericRepository PlayerMissions => + _playerMissionRepository ??= new GenericRepository(_context); + + public IGenericRepository Dialogues => + _dialogueRepository ??= new GenericRepository(_context); + + public IGenericRepository DialogueMessages => + _dialogueMessageRepository ??= new GenericRepository(_context); + + public IGenericRepository DialogueMessageResponseOptions => + _dialogueMessageResponseOptionRepository ??= new GenericRepository(_context); #endregion #region Save Methods @@ -36,7 +98,7 @@ public class UnitOfWork : IUnitOfWork public async Task CommitTransactionAsync() { if (_transaction is null) - throw new InvalidOperationException("A transaction has not been started."); + throw new InvalidOperationException("No transactions have been started yet."); try { @@ -64,5 +126,4 @@ public class UnitOfWork : IUnitOfWork _transaction = null; } #endregion - }