1use adk_core::{Part, Result};
2use async_trait::async_trait;
3
4#[derive(Debug, Clone)]
5pub struct SaveRequest {
6 pub app_name: String,
7 pub user_id: String,
8 pub session_id: String,
9 pub file_name: String,
10 pub part: Part,
11 pub version: Option<i64>,
12}
13
14#[derive(Debug, Clone)]
15pub struct SaveResponse {
16 pub version: i64,
17}
18
19#[derive(Debug, Clone)]
20pub struct LoadRequest {
21 pub app_name: String,
22 pub user_id: String,
23 pub session_id: String,
24 pub file_name: String,
25 pub version: Option<i64>,
26}
27
28#[derive(Debug, Clone)]
29pub struct LoadResponse {
30 pub part: Part,
31}
32
33#[derive(Debug, Clone)]
34pub struct DeleteRequest {
35 pub app_name: String,
36 pub user_id: String,
37 pub session_id: String,
38 pub file_name: String,
39 pub version: Option<i64>,
40}
41
42#[derive(Debug, Clone)]
43pub struct ListRequest {
44 pub app_name: String,
45 pub user_id: String,
46 pub session_id: String,
47}
48
49#[derive(Debug, Clone)]
50pub struct ListResponse {
51 pub file_names: Vec<String>,
52}
53
54#[derive(Debug, Clone)]
55pub struct VersionsRequest {
56 pub app_name: String,
57 pub user_id: String,
58 pub session_id: String,
59 pub file_name: String,
60}
61
62#[derive(Debug, Clone)]
63pub struct VersionsResponse {
64 pub versions: Vec<i64>,
65}
66
67#[async_trait]
68pub trait ArtifactService: Send + Sync {
69 async fn save(&self, req: SaveRequest) -> Result<SaveResponse>;
70 async fn load(&self, req: LoadRequest) -> Result<LoadResponse>;
71 async fn delete(&self, req: DeleteRequest) -> Result<()>;
72 async fn list(&self, req: ListRequest) -> Result<ListResponse>;
73 async fn versions(&self, req: VersionsRequest) -> Result<VersionsResponse>;
74}