headless_lms_models/
url_redirections.rs1use crate::prelude::*;
2
3pub async fn upsert(
4 conn: &mut PgConnection,
5 pkey_policy: PKeyPolicy<Uuid>,
6 destination_page_id: Uuid,
7 old_url_path: &str,
8 course_id: Uuid,
9) -> ModelResult<Uuid> {
10 let res = sqlx::query!(
11 "
12INSERT INTO url_redirections (id, destination_page_id, old_url_path, course_id)
13VALUES ($1, $2, $3, $4)
14ON CONFLICT (old_url_path, course_id, deleted_at) DO UPDATE SET
15 destination_page_id = $2
16RETURNING id
17 ",
18 pkey_policy.into_uuid(),
19 destination_page_id,
20 old_url_path,
21 course_id,
22 )
23 .fetch_one(conn)
24 .await?;
25 Ok(res.id)
26}