Skip to main content

systemprompt_files/services/upload/
request.rs

1use systemprompt_identifiers::{ContextId, FileId, SessionId, TraceId, UserId};
2
3#[derive(Debug, Clone)]
4pub struct FileUploadRequest {
5    pub name: Option<String>,
6    pub mime_type: String,
7    pub bytes_base64: String,
8    pub context_id: ContextId,
9    pub user_id: Option<UserId>,
10    pub session_id: Option<SessionId>,
11    pub trace_id: Option<TraceId>,
12}
13
14#[derive(Debug)]
15pub struct FileUploadRequestBuilder {
16    mime_type: String,
17    bytes_base64: String,
18    context_id: ContextId,
19    name: Option<String>,
20    user_id: Option<UserId>,
21    session_id: Option<SessionId>,
22    trace_id: Option<TraceId>,
23}
24
25impl FileUploadRequestBuilder {
26    pub fn new(
27        mime_type: impl Into<String>,
28        bytes_base64: impl Into<String>,
29        context_id: ContextId,
30    ) -> Self {
31        Self {
32            mime_type: mime_type.into(),
33            bytes_base64: bytes_base64.into(),
34            context_id,
35            name: None,
36            user_id: None,
37            session_id: None,
38            trace_id: None,
39        }
40    }
41
42    pub fn with_name(mut self, name: impl Into<String>) -> Self {
43        self.name = Some(name.into());
44        self
45    }
46
47    pub fn with_user_id(mut self, user_id: UserId) -> Self {
48        self.user_id = Some(user_id);
49        self
50    }
51
52    pub fn with_session_id(mut self, session_id: SessionId) -> Self {
53        self.session_id = Some(session_id);
54        self
55    }
56
57    pub fn with_trace_id(mut self, trace_id: TraceId) -> Self {
58        self.trace_id = Some(trace_id);
59        self
60    }
61
62    pub fn build(self) -> FileUploadRequest {
63        FileUploadRequest {
64            name: self.name,
65            mime_type: self.mime_type,
66            bytes_base64: self.bytes_base64,
67            context_id: self.context_id,
68            user_id: self.user_id,
69            session_id: self.session_id,
70            trace_id: self.trace_id,
71        }
72    }
73}
74
75impl FileUploadRequest {
76    pub fn builder(
77        mime_type: impl Into<String>,
78        bytes_base64: impl Into<String>,
79        context_id: ContextId,
80    ) -> FileUploadRequestBuilder {
81        FileUploadRequestBuilder::new(mime_type, bytes_base64, context_id)
82    }
83}
84
85#[derive(Debug, Clone)]
86pub struct UploadedFile {
87    pub file_id: FileId,
88    pub path: String,
89    pub public_url: String,
90    pub size_bytes: i64,
91}