public override void PopulateIndexes() { Changes.AddOrUpdateRange(Cache.Keys); Parents = Cache.CreateIndex(a => a.ParentGroupFilterID ?? 0); Types = new BiDictionaryManyToMany <int, GroupFilterConditionType>(Cache.Values.ToDictionary(a => a.GroupFilterID, a => a.Types)); PostProcessFilters = new List <GroupFilter>(); }
public override void PostInit(IProgress <InitProgress> progress, int batchSize) { string t = typeof(GroupFilter).Name; InitProgress regen = new InitProgress(); regen.Title = string.Format(Commons.Properties.Resources.Database_Validating, t, string.Empty); regen.Step = 0; regen.Total = 0; progress.Report(regen); foreach (SVR_GroupFilter g in Where(a => a.GroupsIdsVersion < SVR_GroupFilter.GROUPFILTER_VERSION || a.GroupConditionsVersion < SVR_GroupFilter.GROUPCONDITIONS_VERSION || a.SeriesIdsVersion < SVR_GroupFilter.SERIEFILTER_VERSION)) { if (!PostProcessFilters.Contains(g)) { PostProcessFilters.Add(g); } } regen.Total = PostProcessFilters.Count; regen.Title = string.Format(Commons.Properties.Resources.Database_Validating, t, Commons.Properties.Resources.Filter_Recalc); BatchAction(PostProcessFilters, batchSize, (gf, original) => { regen.Step++; if (gf.GroupsIdsVersion < SVR_GroupFilter.GROUPFILTER_VERSION || gf.GroupConditionsVersion < SVR_GroupFilter.GROUPCONDITIONS_VERSION || gf.SeriesIdsVersion < SVR_GroupFilter.SERIEFILTER_VERSION || gf.GroupConditionsVersion < SVR_GroupFilter.GROUPCONDITIONS_VERSION) { gf.CalculateGroupsAndSeries(); } progress.Report(regen); }); regen.Total = PostProcessFilters.Count; regen.Title = string.Format(Commons.Properties.Resources.Database_Validating, t, " " + Commons.Properties.Resources.GroupFilter_Cleanup); // Clean up. This will populate empty conditions and remove duplicate filters IReadOnlyList <SVR_GroupFilter> all = GetAll(); HashSet <SVR_GroupFilter> set = new HashSet <SVR_GroupFilter>(all); List <SVR_GroupFilter> notin = all.Except(set).ToList(); Delete(notin); PostProcessFilters = null; lock (Changes) { Changes.AddOrUpdateRange(Cache.Keys); } }
public override void PopulateIndexes() { Changes.AddOrUpdateRange(Cache.Keys); AniDBIds = Cache.CreateIndex(a => a.AniDB_ID); Groups = Cache.CreateIndex(a => a.AnimeGroupID); }
public override void PopulateIndexes() { Changes.AddOrUpdateRange(Cache.Keys); Parents = Cache.CreateIndex(a => a.AnimeGroupParentID ?? 0); }