mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 13:36:59 +00:00
Add SavedMessages channel type, add create DM.
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use crate::{database::get_collection, util::result::{Error, Result}};
|
||||
use mongodb::bson::to_document;
|
||||
|
||||
/*#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct LastMessage {
|
||||
@@ -33,6 +35,11 @@ pub struct Channel {
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[serde(tag = "type")]
|
||||
pub enum Channel {
|
||||
SavedMessages {
|
||||
#[serde(rename = "_id")]
|
||||
id: String,
|
||||
user: String
|
||||
},
|
||||
DirectMessage {
|
||||
#[serde(rename = "_id")]
|
||||
id: String,
|
||||
@@ -48,3 +55,18 @@ pub enum Channel {
|
||||
recipients: Vec<String>,
|
||||
}
|
||||
}
|
||||
|
||||
impl Channel {
|
||||
pub async fn save(&self) -> Result<()> {
|
||||
get_collection("channels")
|
||||
.insert_one(
|
||||
to_document(&self)
|
||||
.map_err(|_| Error::DatabaseError { operation: "to_bson", with: "channel" })?,
|
||||
None
|
||||
)
|
||||
.await
|
||||
.map_err(|_| Error::DatabaseError { operation: "insert_one", with: "channel" })?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use rocket::request::{self, FromRequest, Outcome, Request};
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
pub struct Relationship {
|
||||
#[serde(rename = "_id")]
|
||||
pub id: String,
|
||||
pub status: u8,
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ use validator::Validate;
|
||||
#[derive(Validate, Serialize, Deserialize)]
|
||||
pub struct Ref {
|
||||
#[validate(length(min = 26, max = 26))]
|
||||
id: String,
|
||||
pub id: String,
|
||||
}
|
||||
|
||||
impl Ref {
|
||||
|
||||
@@ -18,8 +18,8 @@ bitfield! {
|
||||
pub get_invite, _: 29;
|
||||
}
|
||||
|
||||
impl_op_ex!(+ |a: &UserPermission, b: &UserPermission| -> u32 { *a + *b });
|
||||
impl_op_ex!(+ |a: &u32, b: &UserPermission| -> u32 { *a + *b });
|
||||
impl_op_ex!(+ |a: &UserPermission, b: &UserPermission| -> u32 { *a as u32 | *b as u32 });
|
||||
impl_op_ex_commutative!(+ |a: &u32, b: &UserPermission| -> u32 { *a | *b as u32 });
|
||||
|
||||
pub async fn temp_calc_perm(_user: &User, _target: &User) -> UserPermissions<[u32; 1]> {
|
||||
// if friends; Access + Message + Invite
|
||||
|
||||
Reference in New Issue
Block a user