private static void DeleteSiteMenu(TenantCache tenantCache, List <long> siteIds) { var siteMenu = new SiteMenu(); tenantCache.SiteMenu?.ForEach(data => siteMenu.Add(data.Key, data.Value)); siteMenu.RemoveAll((key, value) => siteIds.Contains(key)); tenantCache.SiteMenu = siteMenu; }
private static void DeleteSites(TenantCache tenantCache, List <long> siteIds) { var sites = new Dictionary <long, DataRow>(); tenantCache.Sites?.ForEach(data => sites.Add(data.Key, data.Value)); sites.RemoveAll((key, value) => siteIds.Contains(key)); tenantCache.Sites = sites; }
private static void SetSites(TenantCache tenantCache, EnumerableRowCollection <DataRow> dataRows) { var sites = new Dictionary <long, DataRow>(); tenantCache.Sites?.ForEach(data => sites.Add(data.Key, data.Value)); foreach (var dataRow in dataRows) { sites.AddOrUpdate(dataRow.Long("SiteId"), dataRow); } tenantCache.Sites = sites; }
private static void DeleteLinks(TenantCache tenantCache, List <long> siteIds) { var destinationKeyValues = new Dictionary <long, List <long> >(); var sourceKeyValues = new Dictionary <long, List <long> >(); if (tenantCache.Links != null) { tenantCache.Links?.DestinationKeyValues.ForEach(data => destinationKeyValues.Add(data.Key, data.Value)); tenantCache.Links?.SourceKeyValues.ForEach(data => sourceKeyValues.Add(data.Key, data.Value)); destinationKeyValues.RemoveAll((key, value) => siteIds.Contains(key)); sourceKeyValues.RemoveAll((key, value) => siteIds.Contains(key)); tenantCache.Links.DestinationKeyValues = destinationKeyValues; tenantCache.Links.SourceKeyValues = sourceKeyValues; } }
private static void SetSiteMenu(Context context, TenantCache tenantCache, EnumerableRowCollection <DataRow> dataRows) { var siteMenu = new SiteMenu(); tenantCache.SiteMenu?.ForEach(data => siteMenu.Add(data.Key, data.Value)); foreach (var dataRow in dataRows) { siteMenu.AddOrUpdate( dataRow.Long("SiteId"), new SiteMenuElement( context: context, siteId: dataRow.Long("SiteId"), referenceType: dataRow.String("ReferenceType"), parentId: dataRow.Long("ParentId"), title: dataRow.String("Title"))); } tenantCache.SiteMenu = siteMenu; }
private static void SetSites(Context context, TenantCache tenantCache) { var sitesUpdatedTime = tenantCache.SitesUpdatedTime.ToDateTime(); var dataRows = Rds.ExecuteTable( context: context, statements: Rds.SelectSites( column: Rds.SitesColumn() .SiteId() .Title() .Body() .SiteName() .SiteGroupName() .GridGuide() .EditorGuide() .ReferenceType() .ParentId() .InheritPermission() .SiteSettings() .UpdatedTime(), where : Rds.SitesWhere() .TenantId(context.TenantId) .UpdatedTime(sitesUpdatedTime, _operator: ">"))) .AsEnumerable(); SetSites( tenantCache: tenantCache, dataRows: dataRows); SetSiteMenu( context: context, tenantCache: tenantCache, dataRows: dataRows); SetLinks( context: context, tenantCache: tenantCache, sitesUpdatedTime: sitesUpdatedTime); if (dataRows.Any()) { tenantCache.SitesUpdatedTime = dataRows .Max(o => o.Field <DateTime>("UpdatedTime")) .ToString("yyyy/M/d H:m:s.fff"); } }
private static void SetLinks( Context context, TenantCache tenantCache, DateTime sitesUpdatedTime) { var dataRows = Rds.ExecuteTable( context: context, statements: Rds.SelectLinks( column: Rds.LinksColumn() .DestinationId() .SourceId(), join: new SqlJoinCollection( new SqlJoin( tableBracket: "\"Sites\"", joinType: SqlJoin.JoinTypes.Inner, joinExpression: "\"DestinationSites\".\"SiteId\"=\"Links\".\"DestinationId\"", _as: "DestinationSites"), new SqlJoin( tableBracket: "\"Sites\"", joinType: SqlJoin.JoinTypes.Inner, joinExpression: "\"SourceSites\".\"SiteId\"=\"Links\".\"SourceId\"", _as: "SourceSites")), where : Rds.SitesWhere() .TenantId(context.TenantId, tableName: "DestinationSites") .TenantId(context.TenantId, tableName: "SourceSites") .ReferenceType("Wikis", tableName: "DestinationSites", _operator: "<>") .ReferenceType("Wikis", tableName: "SourceSites", _operator: "<>") .Or(or: Rds.SitesWhere() .UpdatedTime(sitesUpdatedTime, tableName: "DestinationSites", _operator: ">") .UpdatedTime(sitesUpdatedTime, tableName: "SourceSites", _operator: ">")))) .AsEnumerable(); if (dataRows.Any()) { var destinationKeyValues = new Dictionary <long, List <long> >(); var sourceKeyValues = new Dictionary <long, List <long> >(); tenantCache.Links?.DestinationKeyValues.ForEach(data => destinationKeyValues.Add(data.Key, data.Value)); tenantCache.Links?.SourceKeyValues.ForEach(data => sourceKeyValues.Add(data.Key, data.Value)); foreach (var data in dataRows.GroupBy(dataRow => dataRow.Long("DestinationId"))) { destinationKeyValues.AddOrUpdate( data.Key, (destinationKeyValues.Get(data.Key) ?? new List <long>()) .Concat(data.Select(dataRow => dataRow.Long("SourceId"))) .Distinct() .ToList()); } foreach (var data in dataRows.GroupBy(dataRow => dataRow.Long("SourceId"))) { sourceKeyValues.AddOrUpdate( data.Key, (sourceKeyValues.Get(data.Key) ?? new List <long>()) .Concat(data.Select(dataRow => dataRow.Long("DestinationId"))) .Distinct() .ToList()); } if (tenantCache.Links == null) { tenantCache.Links = new LinkKeyValues(); } tenantCache.Links.DestinationKeyValues = destinationKeyValues; tenantCache.Links.SourceKeyValues = sourceKeyValues; } }