backbone_bucket/domain/value_objects/
storage_size.rs1use serde::{Deserialize, Serialize};
8#[cfg(feature = "openapi")]
9use utoipa::ToSchema;
10
11#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
12#[cfg_attr(feature = "openapi", derive(ToSchema))]
13pub struct StorageSize {
14 pub size_bytes: i64,
15}
16
17impl StorageSize {
18 pub fn new(size_bytes: i64) -> Self {
20 Self {
21 size_bytes,
22 }
23 }
24
25 pub fn builder() -> StorageSizeBuilder {
27 <StorageSizeBuilder as Default>::default()
28 }
29
30}
31
32#[derive(Debug, Clone, Default)]
34pub struct StorageSizeBuilder {
35 size_bytes: Option<i64>,
36}
37
38impl StorageSizeBuilder {
39 pub fn size_bytes(mut self, value: i64) -> Self {
41 self.size_bytes = Some(value);
42 self
43 }
44
45 pub fn build(self) -> Result<StorageSize, String> {
47 let size_bytes = self.size_bytes.ok_or_else(|| "size_bytes is required".to_string())?;
48
49 let value = StorageSize {
50 size_bytes,
51 };
52
53 Ok(value)
54 }
55
56}