mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
cleanup SnapshotBatch
This commit is contained in:
parent
408e6ac657
commit
fdbaf5bddf
2 changed files with 15 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue