From 5082db095ac2b72083974386afebe362c8134613 Mon Sep 17 00:00:00 2001 From: Sandro Eiler Date: Mon, 4 Mar 2024 21:20:35 +0100 Subject: [PATCH] feat: add status to subscriptions --- .../20240304110745_add_status_to_subscriptions.sql | 2 ++ ...04195803_make_status_not_null_in_subscriptions.sql | 11 +++++++++++ src/routes/subscriptions.rs | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 migrations/20240304110745_add_status_to_subscriptions.sql create mode 100644 migrations/20240304195803_make_status_not_null_in_subscriptions.sql diff --git a/migrations/20240304110745_add_status_to_subscriptions.sql b/migrations/20240304110745_add_status_to_subscriptions.sql new file mode 100644 index 0000000..7bb3c6d --- /dev/null +++ b/migrations/20240304110745_add_status_to_subscriptions.sql @@ -0,0 +1,2 @@ +-- Add Status Column To Subscriptions Table +ALTER TABLE subscriptions ADD COLUMN status TEXT NULL; diff --git a/migrations/20240304195803_make_status_not_null_in_subscriptions.sql b/migrations/20240304195803_make_status_not_null_in_subscriptions.sql new file mode 100644 index 0000000..a0e31b4 --- /dev/null +++ b/migrations/20240304195803_make_status_not_null_in_subscriptions.sql @@ -0,0 +1,11 @@ +-- Make Status Not Null In Subscriptions +-- We wrap the whole migration in a transaction to make sure +-- it succeeds or fails atomically. +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/src/routes/subscriptions.rs b/src/routes/subscriptions.rs index d8aa4c2..e59b786 100644 --- a/src/routes/subscriptions.rs +++ b/src/routes/subscriptions.rs @@ -72,8 +72,8 @@ pub async fn insert_subscriber( ) -> Result<(), sqlx::Error> { let _ = sqlx::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(),