public async Task Milestone(DateTimeOffset eventDate, MilestonePayload payload)
        {
            var updater = new DataUpdater(_contextFactory, _mapper);

            await updater.UpdateRepositories(eventDate, new[] { payload.Repository });

            switch (payload.Action)
            {
            case "created":
            case "closed":
            case "opened":
            case "edited":
                await updater.UpdateMilestones(payload.Repository.Id, eventDate, new[] { payload.Milestone });

                break;

            case "deleted":
                await updater.DeleteMilestone(payload.Milestone.Id);

                break;

            default:
                throw new NotImplementedException($"Action '{payload.Action}' is not valid for event {nameof(Milestone)}.");
            }

            await updater.Changes.Submit(_queueClient);
        }