Skip to content
Clone

refactor(space): remove channel_members types (inlined)

zhenyi committed
parent 565a428 commit d183d11 Browse files

1 file changed

+0 −88

Deleted lib/space/features/channel_members/types.rs
@@ -1,88 +0,0 @@
1use db::channel::channel_members as member_entity;
2use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4use time::format_description::well_known::Rfc3339;
5use utoipa::ToSchema;
6use uuid::Uuid;
7
8#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
9#[serde(rename_all = "snake_case")]
10pub enum ChannelMemberRole {
11 #[default]
12 Member,
13 Admin,
14 Owner,
15}
16
17impl From<member_entity::ChannelMemberRole> for ChannelMemberRole {
18 fn from(value: member_entity::ChannelMemberRole) -> Self {
19 match value {
20 member_entity::ChannelMemberRole::Member => ChannelMemberRole::Member,
21 member_entity::ChannelMemberRole::Admin => ChannelMemberRole::Admin,
22 member_entity::ChannelMemberRole::Owner => ChannelMemberRole::Owner,
23 }
24 }
25}
26
27impl From<ChannelMemberRole> for member_entity::ChannelMemberRole {
28 fn from(value: ChannelMemberRole) -> Self {
29 match value {
30 ChannelMemberRole::Member => member_entity::ChannelMemberRole::Member,
31 ChannelMemberRole::Admin => member_entity::ChannelMemberRole::Admin,
32 ChannelMemberRole::Owner => member_entity::ChannelMemberRole::Owner,
33 }
34 }
35}
36
37fn fmt_ts(ts: OffsetDateTime) -> String {
38 ts.format(&Rfc3339).unwrap_or_default()
39}
40
41fn fmt_ts_opt(ts: Option<OffsetDateTime>) -> Option<String> {
42 ts.map(fmt_ts)
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
46pub struct ChannelMemberView {
47 pub channel_id: Uuid,
48 pub user_id: Uuid,
49 pub role: ChannelMemberRole,
50 pub muted: bool,
51 pub muted_until: Option<String>,
52 pub last_read_message_id: Option<Uuid>,
53 pub joined_at: String,
54}
55
56impl From<member_entity::Model> for ChannelMemberView {
57 fn from(m: member_entity::Model) -> Self {
58 ChannelMemberView {
59 channel_id: m.channel_id,
60 user_id: m.user_id,
61 role: m.role.into(),
62 muted: m.muted,
63 muted_until: fmt_ts_opt(m.muted_until),
64 last_read_message_id: m.last_read_message_id,
65 joined_at: fmt_ts(m.joined_at),
66 }
67 }
68}
69
70#[derive(Debug, Clone, Deserialize, ToSchema)]
71pub struct AddChannelMemberCmd {
72 pub user_id: Uuid,
73 pub role: Option<ChannelMemberRole>,
74 pub muted: Option<bool>,
75}
76
77#[derive(Debug, Clone, Default, Deserialize, ToSchema)]
78pub struct UpdateChannelMemberCmd {
79 pub role: Option<ChannelMemberRole>,
80 pub muted: Option<bool>,
81 pub muted_until: Option<Option<String>>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
85pub struct ChannelMemberPage {
86 pub items: Vec<ChannelMemberView>,
87 pub total: i64,
88}
No newline at end of file