private SearchResult UpdateSearchHistory(string searchId, DateTime searchDate, double takenTime, int resultsCount) { SearchHistoryEntity entity = new SearchHistoryEntity(searchId, searchDate, takenTime, resultsCount); TableResult result = _searchHistoryTable.Execute(TableOperation.InsertOrReplace(entity)); return(new SearchResult(searchId, searchDate, takenTime, resultsCount)); }
public Attachment Upload(string filename, string filetype, int filesize, Stream filestream, string uploader) { Attachment attachment = new Attachment(); attachment.UploadTimestamp = DateTime.UtcNow; attachment.Filename = filename; attachment.Filetype = filetype; attachment.Filesize = filesize; attachment.Uploader = uploader; attachment.FileID = Guid.NewGuid().ToString() + Path.GetExtension(filename); //attachment.AttachmentId = GenerateAttachmentID(attachment.Uploader, attachment.FileID, attachment.UploadTimestamp); AttachmentEntity attachmentEntity = new AttachmentEntity(attachment); TableOperation insertOperation = TableOperation.InsertOrReplace(attachmentEntity); _attachment.Execute(insertOperation); CloudBlockBlob blockBlob = _blobcontainer.GetBlockBlobReference(attachment.FileID); blockBlob.UploadFromStream(filestream); blockBlob.Properties.ContentType = filetype; return(attachment); }
public CategoryMessage UpdateCategoryMessage(string[] eventIDs, string from, string to, Category category, DateTime timestamp) { CategoryMessage message = new CategoryMessage(eventIDs, from, to, category, timestamp); TableOperation insertOperation = TableOperation.InsertOrReplace((CategoryMessageEntity)message); _categoryMsgTable.Execute(insertOperation); return(message); }
public string PostRichMessage(string userid, DateTime timestamp, string richMsg) { DynamicTableEntity richMsgEntity = CreateRichMessageEntity(userid, timestamp, richMsg); TableOperation insertOperation = TableOperation.InsertOrReplace(richMsgEntity); _richMsg.Execute(insertOperation); return(richMsgEntity.Properties["RichMsgID"].StringValue); }
public CounterSet CreateCounterSet(string groupID, string name, string description = null) { if (GetCounterSet(groupID, name) != null) { throw new CounterSetAlreadyExistException(); } CounterSet cs = new CounterSet(); cs.Group = groupID; cs.Name = name; cs.Description = description; cs.RecordCount = 0; cs.LastUpdateTime = DateTime.UtcNow; CounterSetEntity entity = cs; TableOperation insertOperation = TableOperation.Insert(entity); _counterSet.Execute(insertOperation); return(entity); }
private void SaveSearchResults(string searchId, Dictionary <string, int> searchResults) { foreach (var key in searchResults.Keys) { var mi = new MessageIdentity().FromMessageString(key); var rank = searchResults[key]; SearchResultEntity entity = new SearchResultEntity(searchId, rank, mi); TableOperation insertOperation = TableOperation.InsertOrReplace(entity); _searchResultsTable.Execute(insertOperation); } }
public void AppendDataRecord(int id, string key, string value) { if (System.Text.UTF8Encoding.UTF8.GetByteCount(key) > MetricRecordKeyTooLongException.MaxKeyLengthInByte) { throw new MetricRecordKeyTooLongException(); } using (var _gorillaCtx = new MSGorillaEntities()) { MetricDataSet data = _gorillaCtx.MetricDataSets.Find(id); if (data == null) { throw new MetricDataSetNotFoundException(); } MetricEntity mentity = null; if ((data.RecordCount % MetricEntity.MaxMetricRecord) == 0) { //create a new entity mentity = new MetricEntity(id.ToString(), data.RecordCount.ToString(RowKeyFormat)); } else { //retrive the last entity TableResult result = _metricData.ExecuteRetriveOperation( TableOperation.Retrieve <DynamicTableEntity>( id.ToString(), ((data.RecordCount / MetricEntity.MaxMetricRecord) * MetricEntity.MaxMetricRecord).ToString(RowKeyFormat) ) ); mentity = new MetricEntity((DynamicTableEntity)result.Result); } //insert new data record mentity.Put(key, value, DateTime.UtcNow); TableOperation insertOperation = TableOperation.InsertOrReplace(mentity.ToITableEntity()); _metricData.Execute(insertOperation); data.RecordCount++; _gorillaCtx.SaveChanges(); } }
private void SaveWordsIndex(Dictionary <string, Word> wordsIndex) { foreach (var key in wordsIndex.Keys) { var word = wordsIndex[key] as Word; var msgWithPos = word.InMessagesWithPosition(); foreach (var m in msgWithPos) { var msg = new MessageIdentity(); msg.FromMessageString(m.Key); var pos = m.Value; WordIndexEntity entity = new WordIndexEntity(word.Text, msg, pos); TableOperation insertOperation = TableOperation.InsertOrReplace(entity); _wordsIndexTable.Execute(insertOperation); } } }
public void InsertCounterRecord(CounterRecord record, string name, string groupID) { int id; DynamicTableEntity entity = CounterRecordHelper.ToTableEntity(record, "pk", "rk"); int loopCount = 0; while (true) { try { CounterSetEntity counterSet = GetCounterSet(groupID, name); if (counterSet == null) { throw new CounterSetNotFoundException(); } id = counterSet.RecordCount; counterSet.RecordCount++; TableOperation updateOperation = TableOperation.InsertOrReplace(counterSet); _counterSet.Execute(updateOperation); break; } catch (Exception e) { loopCount++; if (loopCount >= 100) { throw e; } } } entity.PartitionKey = ToRecordPK(groupID, name); entity.RowKey = ToRecordRK(id); TableOperation insertOperation = TableOperation.Insert(entity); _counterRecord.Execute(insertOperation); }
public Reply PostReply(string user, string[] atUser, string msgContent, string richMessage, string[] attachmentID, DateTime timestamp, //string originMessageUser, string originMessageID) { if (_accManager.FindUser(user) == null) { throw new UserNotFoundException(user); } //merge toUser list and @somebody in the message content List <String> validToUsers = new List <String>(); HashSet <string> ToUserIDs = new HashSet <string>(); ToUserIDs.UnionWith(Utils.GetAtUserid(msgContent)); if (atUser != null) { ToUserIDs.UnionWith(atUser); } foreach (string uid in ToUserIDs) { var temp = _accManager.FindUser(uid); if (temp != null) { validToUsers.Add(temp.Userid); } } atUser = validToUsers.ToArray(); TableOperation retreiveOperation = MessageManager.RetrieveUserlineMsgByID <UserLineEntity>(originMessageID); TableResult retreiveResult = _userline.Execute(retreiveOperation); UserLineEntity originMsg = ((UserLineEntity)retreiveResult.Result); if (originMsg == null) { throw new MessageNotFoundException(); } //Insert Rich Message string richMessageID = null; if (!string.IsNullOrEmpty(richMessage)) { richMessageID = _richMsgManager.PostRichMessage(user, timestamp, richMessage); } //Reply reply = new Reply(user, atUser, msgContent, timestamp, originMessageUser, originMessageID); Reply reply = new Reply(user, originMsg.Group, msgContent, timestamp, null, originMessageID, atUser, richMessageID, attachmentID); //insert reply ReplyEntity replyEntity = new ReplyEntity(reply); TableOperation insertOperation = TableOperation.Insert(replyEntity); _reply.Execute(insertOperation); //update reply count originMsg.ReplyCount++; TableOperation updateOperation = TableOperation.Replace(originMsg); _userline.Execute(updateOperation); foreach (string userid in atUser) { if (_accManager.FindUser(userid) == null) { continue; } //notif user ReplyNotificationEntifity notifEntity = new ReplyNotificationEntifity(userid, reply); insertOperation = TableOperation.Insert(notifEntity); _replyNotification.Execute(insertOperation); _replyArchive.Execute(insertOperation); _notifManager.incrementReplyNotifCount(userid); } return(reply); }
public void SpreadMessage(Message message) { TableOperation insertOperation; //insert into Eventline if (!string.IsNullOrEmpty(message.EventID) && !"none".Equals(message.EventID)) { insertOperation = TableOperation.InsertOrReplace(new EventLineEntity(message)); _eventline.Execute(insertOperation); } //insert into PublicSquareLine insertOperation = TableOperation.InsertOrReplace(new PublicSquareLineEntity(message)); _publicSquareLine.Execute(insertOperation); //insert into Atline if (message.AtUser != null) { foreach (string atUserid in message.AtUser) { UserProfile user = _accManager.FindUser(atUserid); if (user != null) { insertOperation = TableOperation.InsertOrReplace(new AtLineEntity(user.Userid, message)); _atline.Execute(insertOperation); _notifManager.incrementAtlineNotifCount(user.Userid); } } } //insert into Topicline if (message.TopicName != null) { foreach (string topicName in message.TopicName) { Topic topic = _topicManager.FindTopicByName(topicName, new string[] { message.Group }); if (topic == null) { topic = new Topic(); topic.Name = topicName; topic.MsgCount = 0; topic.GroupID = message.Group; _topicManager.AddTopic(topic); topic = _topicManager.FindTopicByName(topicName, new string[] { message.Group }); } insertOperation = TableOperation.InsertOrReplace(new TopicLine(message, topic.Id.ToString())); _topicline.Execute(insertOperation); _topicManager.incrementTopicCount(topic.Id); _topicManager.incrementUnreadMsgCountOfFavouriteTopic(topic.Id); } } if (message.Owner != null) { foreach (string ownerid in message.Owner) { UserProfile user = _accManager.FindUser(ownerid); if (user != null) { insertOperation = TableOperation.InsertOrReplace(new OwnerLineEntity(user.Userid, message)); _ownerline.Execute(insertOperation); _notifManager.incrementOwnerlineNotifCount(user.Userid); } } } //insert into homeline HashSet <string> groupMember = new HashSet <string>(); foreach (var member in _groupManager.GetAllGroupMember(message.Group)) { groupMember.Add(member.MemberID.ToLower()); } List <UserProfile> followers = _accManager.Followers(message.User); //followers.Add(_accManager.FindUser(message.User)); //speed tweet to followers foreach (UserProfile user in followers) { if (!groupMember.Contains(user.Userid.ToLower())) { continue; } HomeLineEntity entity = new HomeLineEntity(user.Userid, message); insertOperation = TableOperation.InsertOrReplace(entity); _homeline.Execute(insertOperation); _notifManager.incrementHomelineNotifCount(user.Userid); if (message.Importance == 0) { _notifManager.incrementImportantMsgCount(user.Userid); } } }
public Message PostMessage(string userid, string groupID, string eventID, string schemaID, string[] owner, string[] atUser, string[] topicName, string message, string richMessage, string[] attachmentID, int importance, DateTime timestamp) { if ("none".Equals(message)) { message = ""; } if (message.Length > 2048) { throw new MessageTooLongException(); } UserProfile user = _accManager.FindUser(userid); if (user == null) { throw new UserNotFoundException(userid); } if (!_schemaManager.Contain(schemaID)) { throw new SchemaNotFoundException(); } //merge userid from argument as well as message HashSet <string> validAtUsers = new HashSet <string>(); HashSet <string> atUserids = new HashSet <string>(); atUserids.UnionWith(Utils.GetAtUserid(message)); if (atUser != null) { atUserids.UnionWith(atUser); } foreach (string uid in atUserids) { try { Membership member = _groupManager.CheckMembership(groupID, userid); validAtUsers.Add(member.MemberID); } catch { } } //merge topic from argument as well as message HashSet <string> topic = new HashSet <string>(); topic.UnionWith(Utils.GetTopicNames(message)); if (topicName != null) { topic.UnionWith(topicName); } //Insert Rich Message string richMessageID = null; if (!string.IsNullOrEmpty(richMessage)) { richMessageID = _richMsgManager.PostRichMessage(userid, timestamp, richMessage); } // create message Message msg = new Message(userid, groupID, message, timestamp, eventID, schemaID, owner, validAtUsers.ToArray(), topic.ToArray(), richMessageID, attachmentID, importance); //insert into Userline TableOperation insertOperation = TableOperation.InsertOrReplace(new UserLineEntity(msg)); _userline.Execute(insertOperation); //insert into poster's homeline insertOperation = TableOperation.InsertOrReplace(new HomeLineEntity(msg.User, msg)); _homeline.Execute(insertOperation); //insert into QueueMessage //QueueMessage queueMessage = new QueueMessage(QueueMessage.TypeMessage, msg.ToJsonString()); _queue.AddMessage(msg.toAzureCloudQueueMessage()); _spiderqueue.AddMessage(msg.toAzureCloudQueueMessage()); _mailMessageQueue.AddMessage(msg.toAzureCloudQueueMessage()); user.MessageCount++; _accManager.UpdateUser(user); return(msg); }