cleanup SnapshotBatch

This commit is contained in:
Collin M. Barrett 2018-08-24 08:16:43 -05:00
parent 408e6ac657
commit fdbaf5bddf
2 changed files with 15 additions and 5 deletions

View file

@ -41,7 +41,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sql", "sql", "{A4BB2C81-5232-4162-B410-704D123D2C01}"
ProjectSection(SolutionItems) = preProject
scripts\sql\createDb.sql = scripts\sql\createDb.sql
scripts\sql\monitorForDuplicateRules.sql = scripts\sql\monitorForDuplicateRules.sql
scripts\sql\getDuplicateRules.sql = scripts\sql\getDuplicateRules.sql
scripts\sql\resetSnapshotsRules.sql = scripts\sql\resetSnapshotsRules.sql
scripts\sql\snapshotTimeAnalysis.sql = scripts\sql\snapshotTimeAnalysis.sql
EndProjectSection

View file

@ -22,14 +22,24 @@ public SnapshotBatch(FilterListsDbContext dbContext, IEnumerable<string> lines,
}
public async Task SaveAsync()
{
var rules = GetOrCreateRules();
CreateSnapRules(rules);
await dbContext.SaveChangesAsync();
}
private IQueryable<Rule> GetOrCreateRules()
{
var existingRules = dbContext.Rules.Join(lines, rule => rule.Raw, line => line, (rule, line) => rule);
var newRules = lines.Except(existingRules.Select(r => r.Raw)).Select(l => new Rule {Raw = l}).ToList();
dbContext.Rules.AddRange(newRules);
var rules = existingRules.Concat(newRules);
var snapshotRules = rules.Select(r => new SnapshotRule {Rule = r}).ToList();
snapEntity.SnapshotRules = snapshotRules;
await dbContext.SaveChangesAsync();
return existingRules.Concat(newRules);
}
private void CreateSnapRules(IQueryable<Rule> rules)
{
var snapRules = rules.Select(r => new SnapshotRule {Rule = r}).ToList();
snapEntity.SnapshotRules = snapRules;
}
}
}