mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(coderd): add webpush package (#17091)
* Adds `codersdk.ExperimentWebPush` (`web-push`) * Adds a `coderd/webpush` package that allows sending native push notifications via `github.com/SherClockHolmes/webpush-go` * Adds database tables to store push notification subscriptions. * Adds an API endpoint that allows users to subscribe/unsubscribe, and send a test notification (404 without experiment, excluded from API docs) * Adds server CLI command to regenerate VAPID keys (note: regenerating the VAPID keypair requires deleting all existing subscriptions) --------- Co-authored-by: Kyle Carberry <kyle@carberry.com>
This commit is contained in:
co-authored by
Kyle Carberry
parent
006600ea3e
commit
06e5d9ef21
@@ -189,3 +189,28 @@ WHERE
|
||||
INSERT INTO notification_report_generator_logs (notification_template_id, last_generated_at) VALUES (@notification_template_id, @last_generated_at)
|
||||
ON CONFLICT (notification_template_id) DO UPDATE set last_generated_at = EXCLUDED.last_generated_at
|
||||
WHERE notification_report_generator_logs.notification_template_id = EXCLUDED.notification_template_id;
|
||||
|
||||
-- name: GetWebpushSubscriptionsByUserID :many
|
||||
SELECT *
|
||||
FROM webpush_subscriptions
|
||||
WHERE user_id = @user_id::uuid;
|
||||
|
||||
-- name: InsertWebpushSubscription :one
|
||||
INSERT INTO webpush_subscriptions (user_id, created_at, endpoint, endpoint_p256dh_key, endpoint_auth_key)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
RETURNING *;
|
||||
|
||||
-- name: DeleteWebpushSubscriptions :exec
|
||||
DELETE FROM webpush_subscriptions
|
||||
WHERE id = ANY(@ids::uuid[]);
|
||||
|
||||
-- name: DeleteWebpushSubscriptionByUserIDAndEndpoint :exec
|
||||
DELETE FROM webpush_subscriptions
|
||||
WHERE user_id = @user_id AND endpoint = @endpoint;
|
||||
|
||||
-- name: DeleteAllWebpushSubscriptions :exec
|
||||
-- Deletes all existing webpush subscriptions.
|
||||
-- This should be called when the VAPID keypair is regenerated, as the old
|
||||
-- keypair will no longer be valid and all existing subscriptions will need to
|
||||
-- be recreated.
|
||||
TRUNCATE TABLE webpush_subscriptions;
|
||||
|
||||
Reference in New Issue
Block a user