daytona_client/models/
volume.rs

1//! Volume management models
2
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5use uuid::Uuid;
6
7/// Volume state enumeration
8#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
9#[serde(rename_all = "snake_case")]
10pub enum VolumeState {
11    Creating,
12    Ready,
13    PendingCreate,
14    PendingDelete,
15    Deleting,
16    Deleted,
17    Error,
18}
19
20/// Volume information
21#[derive(Debug, Clone, Serialize, Deserialize)]
22#[serde(rename_all = "camelCase")]
23pub struct VolumeDto {
24    pub id: Uuid,
25    pub name: String,
26    pub organization_id: Uuid,
27    pub state: VolumeState,
28    pub created_at: DateTime<Utc>,
29    pub updated_at: DateTime<Utc>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub last_used_at: Option<DateTime<Utc>>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub error_reason: Option<String>,
34}
35
36/// Create volume request
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct CreateVolumeRequest {
39    pub name: String,
40}
41
42/// Sandbox volume attachment
43#[derive(Debug, Clone, Serialize, Deserialize)]
44#[serde(rename_all = "camelCase")]
45pub struct SandboxVolumeAttachment {
46    pub volume_id: Uuid,
47    pub mount_path: String,
48}