2022-06-13 20:59:46 +08:00
|
|
|
use crate::impl_def_and_def_mut;
|
2021-10-15 15:52:08 +08:00
|
|
|
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
2022-11-08 13:43:41 +08:00
|
|
|
use folder_rev_model::{TrashRevision, TrashTypeRevision};
|
2022-01-15 23:58:36 +08:00
|
|
|
use serde::{Deserialize, Serialize};
|
2021-10-28 13:42:39 +08:00
|
|
|
use std::fmt::Formatter;
|
2021-10-15 15:52:08 +08:00
|
|
|
|
2022-06-11 21:59:08 +08:00
|
|
|
#[derive(Eq, PartialEq, ProtoBuf, Default, Debug, Clone)]
|
2022-07-19 14:11:29 +08:00
|
|
|
pub struct TrashPB {
|
2022-01-15 23:58:36 +08:00
|
|
|
#[pb(index = 1)]
|
|
|
|
pub id: String,
|
|
|
|
|
|
|
|
#[pb(index = 2)]
|
|
|
|
pub name: String,
|
|
|
|
|
|
|
|
#[pb(index = 3)]
|
|
|
|
pub modified_time: i64,
|
|
|
|
|
|
|
|
#[pb(index = 4)]
|
|
|
|
pub create_time: i64,
|
|
|
|
|
|
|
|
#[pb(index = 5)]
|
|
|
|
pub ty: TrashType,
|
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl std::convert::From<TrashRevision> for TrashPB {
|
2022-07-04 14:28:41 +08:00
|
|
|
fn from(trash_rev: TrashRevision) -> Self {
|
2022-07-19 14:11:29 +08:00
|
|
|
TrashPB {
|
2022-07-04 14:28:41 +08:00
|
|
|
id: trash_rev.id,
|
|
|
|
name: trash_rev.name,
|
|
|
|
modified_time: trash_rev.modified_time,
|
|
|
|
create_time: trash_rev.create_time,
|
|
|
|
ty: trash_rev.ty.into(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl std::convert::From<TrashPB> for TrashRevision {
|
|
|
|
fn from(trash: TrashPB) -> Self {
|
2022-07-04 14:28:41 +08:00
|
|
|
TrashRevision {
|
|
|
|
id: trash.id,
|
|
|
|
name: trash.name,
|
|
|
|
modified_time: trash.modified_time,
|
|
|
|
create_time: trash.create_time,
|
|
|
|
ty: trash.ty.into(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-01-15 23:58:36 +08:00
|
|
|
#[derive(PartialEq, Debug, Default, ProtoBuf, Clone)]
|
2022-07-19 14:11:29 +08:00
|
|
|
pub struct RepeatedTrashPB {
|
2022-01-15 23:58:36 +08:00
|
|
|
#[pb(index = 1)]
|
2022-07-19 14:11:29 +08:00
|
|
|
pub items: Vec<TrashPB>,
|
2022-01-15 23:58:36 +08:00
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl_def_and_def_mut!(RepeatedTrashPB, TrashPB);
|
|
|
|
impl std::convert::From<Vec<TrashRevision>> for RepeatedTrashPB {
|
2022-07-04 14:28:41 +08:00
|
|
|
fn from(trash_revs: Vec<TrashRevision>) -> Self {
|
2022-07-19 14:11:29 +08:00
|
|
|
let items: Vec<TrashPB> = trash_revs.into_iter().map(|trash_rev| trash_rev.into()).collect();
|
|
|
|
RepeatedTrashPB { items }
|
2022-07-04 14:28:41 +08:00
|
|
|
}
|
|
|
|
}
|
2022-01-15 23:58:36 +08:00
|
|
|
|
2022-01-16 13:44:14 +08:00
|
|
|
#[derive(Eq, PartialEq, Debug, ProtoBuf_Enum, Clone, Serialize, Deserialize)]
|
2021-10-15 15:52:08 +08:00
|
|
|
pub enum TrashType {
|
2022-07-04 14:28:41 +08:00
|
|
|
TrashUnknown = 0,
|
2022-02-08 14:36:59 +08:00
|
|
|
TrashView = 1,
|
|
|
|
TrashApp = 2,
|
2021-10-15 15:52:08 +08:00
|
|
|
}
|
|
|
|
|
2021-10-15 17:09:50 +08:00
|
|
|
impl std::convert::TryFrom<i32> for TrashType {
|
|
|
|
type Error = String;
|
|
|
|
|
|
|
|
fn try_from(value: i32) -> Result<Self, Self::Error> {
|
|
|
|
match value {
|
2022-07-04 14:28:41 +08:00
|
|
|
0 => Ok(TrashType::TrashUnknown),
|
2022-02-08 14:36:59 +08:00
|
|
|
1 => Ok(TrashType::TrashView),
|
|
|
|
2 => Ok(TrashType::TrashApp),
|
2021-10-15 17:09:50 +08:00
|
|
|
_ => Err(format!("Invalid trash type: {}", value)),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-07-04 14:28:41 +08:00
|
|
|
impl std::convert::From<TrashTypeRevision> for TrashType {
|
|
|
|
fn from(rev: TrashTypeRevision) -> Self {
|
|
|
|
match rev {
|
|
|
|
TrashTypeRevision::Unknown => TrashType::TrashUnknown,
|
|
|
|
TrashTypeRevision::TrashView => TrashType::TrashView,
|
|
|
|
TrashTypeRevision::TrashApp => TrashType::TrashApp,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl std::convert::From<TrashType> for TrashTypeRevision {
|
|
|
|
fn from(rev: TrashType) -> Self {
|
|
|
|
match rev {
|
|
|
|
TrashType::TrashUnknown => TrashTypeRevision::Unknown,
|
|
|
|
TrashType::TrashView => TrashTypeRevision::TrashView,
|
|
|
|
TrashType::TrashApp => TrashTypeRevision::TrashApp,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-15 15:52:08 +08:00
|
|
|
impl std::default::Default for TrashType {
|
2022-01-23 12:14:00 +08:00
|
|
|
fn default() -> Self {
|
2022-07-04 14:28:41 +08:00
|
|
|
TrashType::TrashUnknown
|
2022-01-23 12:14:00 +08:00
|
|
|
}
|
2021-10-15 15:52:08 +08:00
|
|
|
}
|
2021-10-12 22:31:38 +08:00
|
|
|
|
|
|
|
#[derive(PartialEq, ProtoBuf, Default, Debug, Clone)]
|
2022-07-19 14:11:29 +08:00
|
|
|
pub struct RepeatedTrashIdPB {
|
2021-10-17 22:44:51 +08:00
|
|
|
#[pb(index = 1)]
|
2022-07-19 14:11:29 +08:00
|
|
|
pub items: Vec<TrashIdPB>,
|
2021-10-18 18:40:15 +08:00
|
|
|
|
|
|
|
#[pb(index = 2)]
|
|
|
|
pub delete_all: bool,
|
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl std::fmt::Display for RepeatedTrashIdPB {
|
2021-10-28 13:42:39 +08:00
|
|
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
|
|
|
f.write_str(&format!(
|
|
|
|
"{:?}",
|
2021-11-04 12:47:41 +08:00
|
|
|
&self.items.iter().map(|item| format!("{}", item)).collect::<Vec<_>>()
|
2021-10-28 13:42:39 +08:00
|
|
|
))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl RepeatedTrashIdPB {
|
|
|
|
pub fn all() -> RepeatedTrashIdPB {
|
|
|
|
RepeatedTrashIdPB {
|
2021-10-18 18:40:15 +08:00
|
|
|
items: vec![],
|
|
|
|
delete_all: true,
|
|
|
|
}
|
|
|
|
}
|
2021-10-17 22:44:51 +08:00
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl std::convert::From<Vec<TrashIdPB>> for RepeatedTrashIdPB {
|
|
|
|
fn from(items: Vec<TrashIdPB>) -> Self {
|
|
|
|
RepeatedTrashIdPB {
|
2021-10-18 18:40:15 +08:00
|
|
|
items,
|
|
|
|
delete_all: false,
|
|
|
|
}
|
|
|
|
}
|
2021-10-17 22:44:51 +08:00
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl std::convert::From<Vec<TrashRevision>> for RepeatedTrashIdPB {
|
2022-06-13 20:59:46 +08:00
|
|
|
fn from(trash: Vec<TrashRevision>) -> Self {
|
2021-10-17 22:44:51 +08:00
|
|
|
let items = trash
|
|
|
|
.into_iter()
|
2022-07-19 14:11:29 +08:00
|
|
|
.map(|t| TrashIdPB {
|
2022-07-04 14:28:41 +08:00
|
|
|
id: t.id,
|
|
|
|
ty: t.ty.into(),
|
|
|
|
})
|
2021-10-17 22:44:51 +08:00
|
|
|
.collect::<Vec<_>>();
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
RepeatedTrashIdPB {
|
2021-10-18 18:40:15 +08:00
|
|
|
items,
|
|
|
|
delete_all: false,
|
|
|
|
}
|
2021-10-17 22:44:51 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(PartialEq, ProtoBuf, Default, Debug, Clone)]
|
2022-07-19 14:11:29 +08:00
|
|
|
pub struct TrashIdPB {
|
2021-10-12 22:31:38 +08:00
|
|
|
#[pb(index = 1)]
|
|
|
|
pub id: String,
|
|
|
|
|
|
|
|
#[pb(index = 2)]
|
2021-10-15 15:52:08 +08:00
|
|
|
pub ty: TrashType,
|
2021-10-12 22:31:38 +08:00
|
|
|
}
|
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl std::fmt::Display for TrashIdPB {
|
2022-01-23 12:14:00 +08:00
|
|
|
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
|
|
|
f.write_str(&format!("{:?}:{}", self.ty, self.id))
|
|
|
|
}
|
2021-11-04 12:47:41 +08:00
|
|
|
}
|
2022-07-04 14:28:41 +08:00
|
|
|
|
2022-07-19 14:11:29 +08:00
|
|
|
impl std::convert::From<&TrashRevision> for TrashIdPB {
|
2022-07-04 14:28:41 +08:00
|
|
|
fn from(trash: &TrashRevision) -> Self {
|
2022-07-19 14:11:29 +08:00
|
|
|
TrashIdPB {
|
2022-07-04 14:28:41 +08:00
|
|
|
id: trash.id.clone(),
|
|
|
|
ty: trash.ty.clone().into(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|