public async Task <PushSubscription> Store([FromBody] PushSubscription subscription)
        {
            subscription.CreateDate = DateTimeOffset.UtcNow;
            subscription.AppUserId  = GetUserId();
            await DbSession.StoreAsync(subscription, PushSubscription.GetRavenIdFromEndpoint(subscription.Endpoint));

            using (logger.BeginKeyValueScope("subscription", subscription))
            {
                logger.LogInformation("New push notification subscriber");
            }

            // Tell the user he's subscribed.
            var notification = new PushNotification
            {
                Title    = "You're subscribed 😎",
                Body     = "You'll be notified of new Chavah music, features, news and more.",
                ClickUrl = "https://blog.messianicradio.com/2019/01/new-feature-alert-me-of-new-music-on.html"
            };

            pushSender.QueueSendNotification(notification, new List <PushSubscription>(1)
            {
                subscription
            });

            return(subscription);
        }
        public async Task <PushSubscription?> Delete([FromBody] PushSubscription subscription)
        {
            // The supplied PushSubscription is from the browser's PushSubscription type.
            // Thus, it has no ID. We generate an ID from the subscription's unique endpoint. Use that to delete it.
            var subscriptionId = PushSubscription.GetRavenIdFromEndpoint(subscription.Endpoint);
            var existingSub    = await DbSession.LoadOptionalAsync <PushSubscription>(subscriptionId);

            if (existingSub != null)
            {
                DbSession.Delete(existingSub);
                using (logger.BeginKeyValueScope("subscription", subscription))
                {
                    logger.LogInformation("Deleted push subscription");
                }

                return(existingSub);
            }

            logger.LogWarning("Attempted to deleted push subscription {id}, but no such subscription was found", subscriptionId);
            return(null);
        }