lazyBoy/crates/contracts/src/room.rs

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>,
}