From ff0fb28e4bcaf3a858b7c88c7655d9d0689d6a88 Mon Sep 17 00:00:00 2001 From: Andre Heber Date: Mon, 26 Feb 2024 15:42:56 +0100 Subject: [PATCH] migrate db to support confirmation emails --- migrations/20240226143929_add_status_to_subscriptions.sql | 1 + ...240226144038_make_status_not_null_in_subscriptions.sql | 8 ++++++++ .../20240226144122_create_subscription_tokens_table.sql | 6 ++++++ src/routes/subscriptions.rs | 4 ++-- 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 migrations/20240226143929_add_status_to_subscriptions.sql create mode 100644 migrations/20240226144038_make_status_not_null_in_subscriptions.sql create mode 100644 migrations/20240226144122_create_subscription_tokens_table.sql diff --git a/migrations/20240226143929_add_status_to_subscriptions.sql b/migrations/20240226143929_add_status_to_subscriptions.sql new file mode 100644 index 0000000..f314de8 --- /dev/null +++ b/migrations/20240226143929_add_status_to_subscriptions.sql @@ -0,0 +1 @@ +ALTER TABLE subscriptions ADD COLUMN status TEXT NULL; diff --git a/migrations/20240226144038_make_status_not_null_in_subscriptions.sql b/migrations/20240226144038_make_status_not_null_in_subscriptions.sql new file mode 100644 index 0000000..f40a376 --- /dev/null +++ b/migrations/20240226144038_make_status_not_null_in_subscriptions.sql @@ -0,0 +1,8 @@ +BEGIN; + -- Backfill `status` for historical entries + UPDATE subscriptions + SET status = 'confirmed' + WHERE status IS NULL; + -- Make `status` mandatory + ALTER TABLE subscriptions ALTER COLUMN status SET NOT NULL; +COMMIT; diff --git a/migrations/20240226144122_create_subscription_tokens_table.sql b/migrations/20240226144122_create_subscription_tokens_table.sql new file mode 100644 index 0000000..2a74405 --- /dev/null +++ b/migrations/20240226144122_create_subscription_tokens_table.sql @@ -0,0 +1,6 @@ +CREATE TABLE subscription_tokens( + subscription_token TEXT NOT NULL, + subscriber_id uuid NOT NULL + REFERENCES subscriptions (id), + PRIMARY KEY (subscription_token) +); diff --git a/src/routes/subscriptions.rs b/src/routes/subscriptions.rs index 2bebcb3..b7671cd 100644 --- a/src/routes/subscriptions.rs +++ b/src/routes/subscriptions.rs @@ -104,8 +104,8 @@ impl TryFrom for NewSubscriber { async fn insert_subscriber(new_subscriber: &NewSubscriber, connection_pool: &Pool) -> Result<(), sqlx::Error> { query!( r#" - INSERT INTO subscriptions (id, email, name, subscribed_at) - VALUES ($1, $2, $3, $4) + INSERT INTO subscriptions (id, email, name, subscribed_at, status) + VALUES ($1, $2, $3, $4, 'confirmed') "#, Uuid::new_v4(), new_subscriber.email.as_ref(),