algohub_server/utils/
submission.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use crate::models::submission::{Submission, UserSubmission};
use anyhow::Result;
use surrealdb::{engine::remote::ws::Client, Surreal};

pub async fn create<'a>(
    db: &'a Surreal<Client>,
    id: &str,
    submission: UserSubmission<'a>,
) -> Result<Option<Submission>> {
    Ok(db
        .create("submission")
        .content(Submission {
            id: None,
            lang: submission.lang,
            code: submission.code,
            problem_id: submission.problem_id.to_string(),
            status: crate::models::submission::Status::InQueue,

            creator: ("account", id).into(),
            results: vec![],

            created_at: chrono::Local::now().naive_local(),
            updated_at: chrono::Local::now().naive_local(),
        })
        .await?)
}

pub async fn get_by_id(db: &Surreal<Client>, id: &str) -> Result<Option<Submission>> {
    Ok(db.select(("submission", id)).await?)
}