adk_artifact/
service.rs

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}