lockbook_shared/
server_file.rs

1use crate::file_like::FileLike;
2use crate::signed_file::SignedFile;
3use serde::{Deserialize, Serialize};
4use std::fmt::{Display, Formatter};
5
6#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
7pub struct ServerFile {
8    pub file: SignedFile,
9    pub version: u64,
10}
11
12pub trait IntoServerFile {
13    fn add_time(self, version: u64) -> ServerFile;
14}
15
16impl IntoServerFile for SignedFile {
17    fn add_time(self, version: u64) -> ServerFile {
18        ServerFile { file: self, version }
19    }
20}
21
22trait FromSignedFile {
23    fn from(file: SignedFile, version: u64) -> ServerFile {
24        file.add_time(version)
25    }
26}
27
28impl Display for ServerFile {
29    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
30        write!(f, "{}", self.display())
31    }
32}