headless_lms_models/
join_code_uses.rs

1use 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}