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