headless_lms_models/
file_uploads.rs1use crate::prelude::*;
2
3pub async fn insert(
4 conn: &mut PgConnection,
5 name: &str,
6 path: &str,
7 mime: &str,
8 uploader: Option<Uuid>,
9) -> ModelResult<Uuid> {
10 let res = sqlx::query!(
11 r#"
12INSERT INTO file_uploads(path, name, mime, uploaded_by_user)
13VALUES ($1, $2, $3, $4)
14RETURNING id
15"#,
16 path,
17 name,
18 mime,
19 uploader
20 )
21 .fetch_one(conn)
22 .await?;
23 Ok(res.id)
24}
25
26pub async fn get_filename(conn: &mut PgConnection, path: &str) -> ModelResult<String> {
27 let res = sqlx::query!(
28 r#"
29SELECT name
30FROM file_uploads
31WHERE path = $1
32"#,
33 path,
34 )
35 .fetch_one(conn)
36 .await?;
37 Ok(res.name)
38}
39
40pub async fn delete_and_fetch_path(conn: &mut PgConnection, id: Uuid) -> ModelResult<String> {
41 let res = sqlx::query!(
42 "
43UPDATE file_uploads
44SET deleted_at = now()
45WHERE id = $1
46RETURNING path
47",
48 id
49 )
50 .fetch_one(conn)
51 .await?;
52 Ok(res.path)
53}