diff --git a/src/repo/mod.rs b/src/repo/mod.rs index 2af9758..d185221 100644 --- a/src/repo/mod.rs +++ b/src/repo/mod.rs @@ -1,2 +1,3 @@ pub mod contact; pub mod message; +pub mod scheduling; diff --git a/src/repo/scheduling.rs b/src/repo/scheduling.rs new file mode 100644 index 0000000..9f87472 --- /dev/null +++ b/src/repo/scheduling.rs @@ -0,0 +1,28 @@ +use sqlx::Row; + +pub async fn insert( + pool: &sqlx::PgPool, + scheduled_message: &textsender_models::message::scheduling::ScheduledMessage, + user_id: &uuid::Uuid, +) -> Result<(uuid::Uuid, time::OffsetDateTime), sqlx::Error> { + match sqlx::query( + r#" + INSERT INTO "scheduled_messages" (scheduled, status, user_id) + VALUES($1, $2, $3) RETURNING id, created; + "#, + ) + .bind(scheduled_message.scheduled) + .bind(&scheduled_message.status) + .bind(user_id) + .fetch_one(pool) + .await + { + Ok(row) => { + let id: uuid::Uuid = row.try_get("id")?; + let created: time::OffsetDateTime = row.try_get("created")?; + Ok((id, created)) + } + Err(_) => Err(sqlx::Error::RowNotFound), + } +} +