algohub_server/models/
asset.rs1use std::path::PathBuf;
2
3use rocket::{
4 fs::{NamedFile, TempFile},
5 response::Responder,
6};
7use serde::{Deserialize, Serialize};
8use surrealdb::sql::Thing;
9
10use super::{Credentials, UserRecordId};
11
12#[derive(Serialize, Deserialize)]
13pub struct Asset {
14 pub id: Option<Thing>,
15 pub name: String,
16 pub owner: Thing,
17 pub path: PathBuf,
18}
19
20#[derive(FromForm)]
21pub struct CreateAsset<'a> {
22 pub auth: Credentials<'a>,
23 pub owner: UserRecordId,
24 pub file: TempFile<'a>,
25}
26
27#[derive(Serialize, Deserialize)]
28pub struct UserContent {
29 pub id: String,
30 pub name: String,
31}
32
33pub struct AssetFile(pub(crate) NamedFile);
34
35impl<'r, 'o: 'r> Responder<'r, 'o> for AssetFile {
36 fn respond_to(self, req: &rocket::Request) -> rocket::response::Result<'o> {
37 rocket::Response::build_from(self.0.respond_to(req)?)
38 .raw_header("Cache-control", "max-age=86400") .ok()
40 }
41}