Exemple #1
0
        public async Task OnRequest(PurgeOldMediaRequestEvent request)
        {
            Logger.LogMessage("Purge media update: {0}, User: {1}", request.UpTo, request.User.UserId);

            var userId = request.User.UserId;

            // Load all the media items before the specific date to delete.
            var mediaItems = await _mediaService.LoadByUserAsync(userId, userId, DateTime.MinValue, request.UpTo, 0, 1000);

            Logger.LogMessage("Found {0} media items to purge for user: {1}", mediaItems.Count, userId);

            if (mediaItems.Count > 1000)
            {
                Logger.LogWarn("Found a lot ({0} of historical media items purging for user: {1}", mediaItems.Count, userId);
            }

            foreach (var mediaItem in mediaItems)
            {
                Logger.LogMessage("Deleting item {0}. User: {1}", mediaItem.Id, mediaItem.UserId);
                await _mediaService.DeleteAsync(mediaItem);
            }

            // This limits the max items that can be deleted to 100,000, which hopefully is enough.
            // the prevents a possible never ending situation of purging if it's going wrong.
            if (mediaItems.Count >= 1000 && request.Attempt < 100)
            {
                request.Attempt++;

                Logger.LogWarn("Found to many media items to delete in one go. Sending another request... Attempt: {0}", request.Attempt);
                // Republish the request as theirs still more to delete!
                await _bus.PublishAsync(request);
            }
        }
Exemple #2
0
        public async Task OnMessageAsync(DeviceDeletedEvent deviceDeletedEvent)
        {
            var device = deviceDeletedEvent.Device;

            Logger.LogMessage("Device deleted event: UserId: {0}", device.UserId);

            PurgeOldMediaRequestEvent purgeOldMediaRequest = new PurgeOldMediaRequestEvent
            {
                UpTo = DateTime.UtcNow,
                User = deviceDeletedEvent.Device
            };
            await _bus.PublishAsync(purgeOldMediaRequest);
        }
Exemple #3
0
        public async Task OnMessageAsync(MemberDeletedEvent memberDeletedEvent)
        {
            var user = memberDeletedEvent.User;

            Logger.LogMessage("Member deleted event: UserId: {0}", user.UserId);

            PurgeOldMediaRequestEvent purgeOldMediaRequest = new PurgeOldMediaRequestEvent
            {
                UpTo = DateTime.UtcNow,
                User = memberDeletedEvent.User
            };
            await _bus.PublishAsync(purgeOldMediaRequest);
        }