diff --git a/Backend.Tests/Mocks/WordRepositoryMock.cs b/Backend.Tests/Mocks/WordRepositoryMock.cs index 49a6ecaa1b..242de776b2 100644 --- a/Backend.Tests/Mocks/WordRepositoryMock.cs +++ b/Backend.Tests/Mocks/WordRepositoryMock.cs @@ -75,6 +75,12 @@ public Task> GetFrontier(string projectId) return Task.FromResult(_frontier.Where(w => w.ProjectId == projectId).Select(w => w.Clone()).ToList()); } + public Task> GetFrontierWithVernacular(string projectId, string vernacular) + { + return Task.FromResult(_frontier.Where( + w => w.ProjectId == projectId && w.Vernacular == vernacular).Select(w => w.Clone()).ToList()); + } + public Task AddFrontier(Word word) { _frontier.Add(word.Clone()); diff --git a/Backend/Interfaces/IWordRepository.cs b/Backend/Interfaces/IWordRepository.cs index 342970e443..004de35132 100644 --- a/Backend/Interfaces/IWordRepository.cs +++ b/Backend/Interfaces/IWordRepository.cs @@ -15,6 +15,7 @@ public interface IWordRepository Task IsFrontierNonempty(string projectId); Task IsInFrontier(string projectId, string wordId); Task> GetFrontier(string projectId); + Task> GetFrontierWithVernacular(string projectId, string vernacular); Task AddFrontier(Word word); Task> AddFrontier(List words); Task DeleteFrontier(string projectId, string wordId); diff --git a/Backend/Repositories/WordRepository.cs b/Backend/Repositories/WordRepository.cs index 95259027e4..8a6a9f2a7b 100644 --- a/Backend/Repositories/WordRepository.cs +++ b/Backend/Repositories/WordRepository.cs @@ -145,6 +145,13 @@ public async Task> GetFrontier(string projectId) return await _wordDatabase.Frontier.Find(w => w.ProjectId == projectId).ToListAsync(); } + /// Finds all s in Frontier of specified project with specified vern + public async Task> GetFrontierWithVernacular(string projectId, string vernacular) + { + return await _wordDatabase.Frontier.Find( + w => w.ProjectId == projectId && w.Vernacular == vernacular).ToListAsync(); + } + /// Adds a only to the Frontier /// /// The word created diff --git a/Backend/Services/WordService.cs b/Backend/Services/WordService.cs index 15ce094eb3..3072a12cce 100644 --- a/Backend/Services/WordService.cs +++ b/Backend/Services/WordService.cs @@ -173,8 +173,8 @@ public async Task Update(string projectId, string userId, string wordId, W /// The id string of the existing word, or null if none. public async Task FindContainingWord(Word word) { - var frontier = await _wordRepo.GetFrontier(word.ProjectId); - var duplicatedWord = frontier.Find(w => w.Contains(word)); + var wordsWithVern = await _wordRepo.GetFrontierWithVernacular(word.ProjectId, word.Vernacular); + var duplicatedWord = wordsWithVern.Find(w => w.Contains(word)); return duplicatedWord?.Id; } }