36 lines
930 B
Rust
36 lines
930 B
Rust
|
|
use chrono::{DateTime, Utc};
|
||
|
|
use serde::{Deserialize, Serialize};
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct RoomMember {
|
||
|
|
pub id: String,
|
||
|
|
pub name: String,
|
||
|
|
pub avatar_color: String,
|
||
|
|
pub avatar_shape: String,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct Room {
|
||
|
|
pub id: String,
|
||
|
|
pub name: String,
|
||
|
|
pub members: Vec<RoomMember>,
|
||
|
|
pub last_message_at: Option<DateTime<Utc>>,
|
||
|
|
pub last_preview: Option<String>,
|
||
|
|
pub unread_count: i64,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct CreateRoomInput {
|
||
|
|
pub name: String,
|
||
|
|
pub member_ids: Vec<String>,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct RoomStatus {
|
||
|
|
pub busy: Vec<RoomMember>,
|
||
|
|
}
|