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(),