diff --git a/BuildFeed.Model/BuildRepository.cs b/BuildFeed.Model/BuildRepository.cs index 2cd9684..d42c346 100644 --- a/BuildFeed.Model/BuildRepository.cs +++ b/BuildFeed.Model/BuildRepository.cs @@ -225,6 +225,12 @@ public async Task> SelectBuildsByStringSearch(string term, int limit return await query.ToListAsync(); } + [DataObjectMethod(DataObjectMethodType.Select, false)] + public async Task SelectBuildByFullBuildString(string build) + { + return await _buildCollection.Find(Builders.Filter.Eq(b => b.FullBuildString, build)).SingleOrDefaultAsync(); + } + [DataObjectMethod(DataObjectMethodType.Select, false)] public async Task> SelectBuildsByCompileDate(int limit = -1, int skip = 0) { diff --git a/BuildFeed/BuildFeed.csproj b/BuildFeed/BuildFeed.csproj index d8f03bf..c70cb97 100644 --- a/BuildFeed/BuildFeed.csproj +++ b/BuildFeed/BuildFeed.csproj @@ -292,6 +292,7 @@ + diff --git a/BuildFeed/Controllers/frontController.cs b/BuildFeed/Controllers/frontController.cs index 9d46b1e..c348c3b 100644 --- a/BuildFeed/Controllers/frontController.cs +++ b/BuildFeed/Controllers/frontController.cs @@ -474,14 +474,24 @@ public async Task AddBulk(FormCollection values) SourceType = TypeOfSource.PrivateLeak }; - await _bModel.Insert(b); + string buildString = b.GenerateFullBuildString(); + Build existing = await _bModel.SelectBuildByFullBuildString(buildString); - if (notify) + if (existing == null) { - osc.PushNewBuild(b, $"https://buildfeed.net{Url.Action(nameof(ViewBuild), new { id = b.Id })}?utm_source=notification&utm_campaign=new_build"); - } + await _bModel.Insert(b); - success.Add(b); + if (notify) + { + osc.PushNewBuild(b, $"https://buildfeed.net{Url.Action(nameof(ViewBuild), new { id = b.Id })}?utm_source=notification&utm_campaign=new_build"); + } + + success.Add(b); + } + else + { + failed.Add(line); + } } catch (Exception) {