Fetch schedule message endpoint (#21)
textsender_api PR / Rustfmt (pull_request) Successful in 49s
textsender_api PR / Check (pull_request) Successful in 1m22s
textsender_api PR / Clippy (pull_request) Successful in 2m5s
Rust Build / Test Suite (pull_request) Successful in 35s
Rust Build / Rustfmt (pull_request) Successful in 41s
textsender_api PR / Rustfmt (pull_request) Successful in 49s
textsender_api PR / Check (pull_request) Successful in 1m22s
textsender_api PR / Clippy (pull_request) Successful in 2m5s
Rust Build / Test Suite (pull_request) Successful in 35s
Rust Build / Rustfmt (pull_request) Successful in 41s
Reviewed-on: phoenix/textsender_api#21
This commit was merged in pull request #21.
This commit is contained in:
@@ -84,6 +84,36 @@ pub async fn get_with_user_id(
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn fetch(
|
||||
pool: &sqlx::PgPool,
|
||||
) -> Result<textsender_models::message::scheduling::ScheduledMessage, sqlx::Error> {
|
||||
match sqlx::query(
|
||||
r#"
|
||||
UPDATE "scheduled_messages"
|
||||
SET status = $1
|
||||
WHERE id = (
|
||||
SELECT id FROM "scheduled_messages"
|
||||
WHERE status = $2
|
||||
ORDER BY id
|
||||
FOR UPDATE SKIP LOCKED
|
||||
LIMIT 1
|
||||
)
|
||||
RETURNING id, scheduled, created, status, user_id
|
||||
"#,
|
||||
)
|
||||
.bind(textsender_models::message::scheduling::PROCESSING)
|
||||
.bind(textsender_models::message::scheduling::READY)
|
||||
.fetch_one(pool)
|
||||
.await
|
||||
{
|
||||
Ok(row) => match parse_row(&row).await {
|
||||
Ok(scheduled_message) => Ok(scheduled_message),
|
||||
Err(err) => Err(err),
|
||||
},
|
||||
Err(err) => Err(err),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn update_status(
|
||||
pool: &sqlx::PgPool,
|
||||
id: &uuid::Uuid,
|
||||
|
||||
Reference in New Issue
Block a user