systemprompt_files/services/upload/
request.rs1use 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}