headless_lms_models/
partner_block.rs1use crate::prelude::*;
2
3#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
4#[cfg_attr(feature = "ts_rs", derive(TS))]
5pub struct PartnersBlock {
6 pub id: Uuid,
7 pub created_at: DateTime<Utc>,
8 pub updated_at: DateTime<Utc>,
9 pub deleted_at: Option<DateTime<Utc>>,
10 pub content: serde_json::Value,
11 pub course_id: Uuid,
12}
13
14#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
15#[cfg_attr(feature = "ts_rs", derive(TS))]
16pub struct PartnerBlockNew {
17 pub course_id: Uuid,
18 pub content: Option<serde_json::Value>,
19}
20
21pub async fn upsert_partner_block(
22 conn: &mut PgConnection,
23 course_id: Uuid,
24 content: Option<serde_json::Value>,
25) -> ModelResult<PartnersBlock> {
26 let res = sqlx::query_as!(
27 PartnersBlock,
28 r#"
29INSERT INTO partners_blocks (course_id, content)
30VALUES ($1, $2)
31ON CONFLICT (course_id)
32DO UPDATE
33SET content = EXCLUDED.content
34RETURNING *
35"#,
36 course_id,
37 content,
38 )
39 .fetch_one(conn)
40 .await?;
41 Ok(res)
42}
43
44pub async fn get_partner_block(
45 conn: &mut PgConnection,
46 course_id: Uuid,
47) -> ModelResult<PartnersBlock> {
48 let res = sqlx::query_as!(
49 PartnersBlock,
50 "SELECT *
51FROM partners_blocks
52WHERE course_id = $1
53 AND deleted_at IS NULL",
54 course_id
55 )
56 .fetch_one(conn)
57 .await?;
58 Ok(res)
59}
60
61pub async fn delete_partner_block(
62 conn: &mut PgConnection,
63 course_id: Uuid,
64) -> ModelResult<PartnersBlock> {
65 let deleted = sqlx::query_as!(
66 PartnersBlock,
67 r#"
68UPDATE partners_blocks
69SET deleted_at = now()
70WHERE course_id = $1
71AND deleted_at IS NULL
72RETURNING *
73 "#,
74 course_id
75 )
76 .fetch_one(conn)
77 .await?;
78 Ok(deleted)
79}
80
81pub async fn check_if_course_exists(
82 conn: &mut PgConnection,
83 course_id: Uuid,
84) -> Result<bool, sqlx::Error> {
85 let exists = sqlx::query!(
86 r#"
87 SELECT 1 AS exists
88 FROM partners_blocks
89 WHERE course_id = $1
90 LIMIT 1
91 "#,
92 course_id
93 )
94 .fetch_optional(conn)
95 .await?;
96 Ok(exists.is_some())
97}