headless_lms_models/
join_code_uses.rs1use crate::prelude::*;
2
3#[derive(Debug, Serialize, Deserialize, PartialEq, Clone)]
4pub struct JoinCodeUses {
5 pub id: Uuid,
6 pub user_id: Uuid,
7 pub course_id: Uuid,
8 pub created_at: DateTime<Utc>,
9 pub updated_at: DateTime<Utc>,
10 pub deleted_at: Option<DateTime<Utc>>,
11}
12
13pub async fn insert(
14 conn: &mut PgConnection,
15 pkey_policy: PKeyPolicy<Uuid>,
16 user_id: Uuid,
17 course_id: Uuid,
18) -> ModelResult<Uuid> {
19 let res = sqlx::query!(
20 "
21INSERT INTO join_code_uses (id, user_id, course_id)
22VALUES ($1, $2, $3)
23RETURNING id
24 ",
25 pkey_policy.into_uuid(),
26 user_id,
27 course_id
28 )
29 .fetch_one(conn)
30 .await?;
31 Ok(res.id)
32}
33
34pub async fn check_if_user_has_access_to_course(
35 conn: &mut PgConnection,
36 user_id: Uuid,
37 course_id: Uuid,
38) -> ModelResult<Uuid> {
39 let res = sqlx::query!(
40 "
41SELECT id
42FROM join_code_uses
43WHERE user_id = $1
44AND course_id = $2
45 ",
46 user_id,
47 course_id
48 )
49 .fetch_one(conn)
50 .await?;
51 Ok(res.id)
52}