// table storage stuff public static async Task <Post> InsertPost(PostSubmitDTO postDTO) { long now = Tools.ConvertToEpoch(DateTime.UtcNow); long countdown = Tools.GetCountdownFromDateTime(now); string id = countdown.ToString() + Guid.NewGuid().ToString(); Post post = new Post(id, postDTO.track_id) { body = postDTO.body, url = postDTO.url, summary = postDTO.summary, date_created = now, track_name = postDTO.track_name, tags = string.Join(",", postDTO.tags), title = postDTO.title, type = postDTO.type, has_image = false }; // TODO: process image if (Tools.ValidateUri(postDTO.image_url)) { post.has_image = await ProcessImage(id, postDTO.image_url); } var result = await TableStorageRepository.InsertPost(post); if (result == null) { return(null); } // shit hack to remove body for queue processing post.body = null; // add to queues for further processing TableStorageRepository.AddMessageToQueue("process-new-post-increment-track-tags", JsonConvert.SerializeObject(post)); TableStorageRepository.AddMessageToQueue("process-new-post-add-to-cosmos", JsonConvert.SerializeObject(post)); // check rate limit Random rnd = new Random(); if (rnd.Next(1, 8) == 3) { TableStorageRepository.AddMessageToQueue("process-new-post-check-rate-limit", post.PartitionKey); } return(post); }
public static async Task <bool> DeleteTrack(string trackId) { // decrement the count var track = await GetTrack(trackId); ExtendedUserRepository.DecrementTrackCount(track.PartitionKey, track.is_private); // send messages to queue TableStorageRepository.AddMessageToQueue("delete-posts-from-track", trackId); TableStorageRepository.AddMessageToQueue("delete-tracktags-from-track", trackId); // then delete track cosmos CosmosRepository <Track> .DeleteItemAsync(trackId); // then delete profile pics DeleteImages(trackId); // then delete from table storage, and return return(await TableStorageRepository.DeleteTrack(trackId)); }