public static void AddSite( // the incoming queue [QueueTrigger(SiteMonitRConfiguration.QUEUE_NAME_NEW_SITE)] string url, // the list of all sites [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)] IQueryable <SiteRecord> listOfSiteRecords, // the table into which sites should be saved [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)] CloudTable table ) { var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url); var siteRecord = new SiteRecord(); siteRecord.RowKey = SiteMonitRConfiguration.GetPartitionKey(); siteRecord.PartitionKey = cleansedUrl; siteRecord.Uri = url; if (!listOfSiteRecords.ToList().Any(entity => entity.PartitionKey == siteRecord.PartitionKey)) { table.Execute(TableOperation.InsertOrReplace(siteRecord)); } }
public static void DeleteSite( // the incoming queue [QueueInput(SiteMonitRConfiguration.QUEUE_NAME_DELETE_SITE)] string url, // the site list table from which data should be deleted [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)] IDictionary <Tuple <string, string>, SiteRecord> siteRecords, // the site log table from which data should be deleted [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)] IDictionary <Tuple <string, string>, SiteResult> siteResults ) { var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url); var key = new Tuple <string, string>( SiteMonitRConfiguration.GetPartitionKey(), cleansedUrl); // delete the site record if (siteRecords.ContainsKey(key)) { siteRecords.Remove(key); } // delete all the site's logs foreach (var siteResult in siteResults) { if (siteResult.Key.Item1 == cleansedUrl) { siteResults.Remove(siteResult.Key); } } }
public static void SaveSiteLogEntry( // the incoming queue [QueueTrigger(SiteMonitRConfiguration.QUEUE_NAME_INCOMING_SITE_LOG)] SiteResult siteResult, // the site log table, into which data will be saved [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)] CloudTable resultTable ) { siteResult.RowKey = SiteMonitRConfiguration.CleanUrlForRowKey(siteResult.Uri); siteResult.PartitionKey = Path.GetFileNameWithoutExtension(Path.GetRandomFileName()); resultTable.Execute(TableOperation.InsertOrReplace(siteResult)); }
public SiteLogTableEntity GetLatestLogForSite(string uri) { var partitionKey = SiteMonitRConfiguration.CleanUrlForRowKey(uri); var query = new TableQuery <SiteLogTableEntity>().Where( TableQuery.GenerateFilterCondition("Uri", QueryComparisons.Equal, uri) ); var tbl = GetSiteLogTable(); var ret = tbl.ExecuteQuery <SiteLogTableEntity>(query) .OrderByDescending(x => x.Timestamp) .FirstOrDefault(); return(ret); }
public static void SaveSiteLogEntry( // the incoming queue [QueueInput(SiteMonitRConfiguration.QUEUE_NAME_INCOMING_SITE_LOG)] SiteResult siteResult, // the site log table, into which data will be saved [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)] IDictionary <Tuple <string, string>, SiteResult> siteResults ) { var tuple = new Tuple <string, string>( SiteMonitRConfiguration.CleanUrlForRowKey(siteResult.Uri), Path.GetFileNameWithoutExtension(Path.GetRandomFileName()) ); siteResults.Add(new KeyValuePair <Tuple <string, string>, SiteResult>( tuple, siteResult)); }
public static void AddSite( // the incoming queue [QueueInput(SiteMonitRConfiguration.QUEUE_NAME_NEW_SITE)] string url, // the table into which sites should be saved [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)] IDictionary <Tuple <string, string>, SiteRecord> siteRecords ) { var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url); var key = new Tuple <string, string>( SiteMonitRConfiguration.GetPartitionKey(), cleansedUrl); if (!siteRecords.ContainsKey(key)) { siteRecords.Add(key, new SiteRecord { Uri = url }); } }
public static void DeleteSite( // the incoming queue [QueueTrigger(SiteMonitRConfiguration.QUEUE_NAME_DELETE_SITE)] string url, // the list of all sites [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)] IQueryable <SiteRecord> listofSiteRecords, // the list of all site logs [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)] IQueryable <SiteResult> listofSiteResults, // the site list table from which data should be deleted [Table(SiteMonitRConfiguration.TABLE_NAME_SITES)] CloudTable recordTable, // the site log table from which data should be deleted [Table(SiteMonitRConfiguration.TABLE_NAME_SITE_LOGS)] CloudTable resultTable ) { var cleansedUrl = SiteMonitRConfiguration.CleanUrlForRowKey(url); if (listofSiteRecords.ToList().Any(entity => entity.PartitionKey == cleansedUrl)) { var siteRecord = listofSiteRecords.ToList().Where(entity => entity.RowKey == cleansedUrl).FirstOrDefault(); recordTable.Execute(TableOperation.Delete(siteRecord)); } // delete all the site's logs foreach (var siteResult in listofSiteResults) { if (siteResult.PartitionKey == cleansedUrl) { resultTable.Execute(TableOperation.Delete(siteResult)); } } }