mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 13:36:59 +00:00
8
Cargo.lock
generated
8
Cargo.lock
generated
@@ -1613,11 +1613,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "iso8601-timestamp"
|
||||
version = "0.2.10"
|
||||
version = "0.2.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "368d05885f276773b79b4578869a60ab91e880415d17fb2a8d193aea74188a29"
|
||||
checksum = "3bd7663ae5b511b3d13c7d374dbe73b03da3da8e66b83950390173bc7c7325cc"
|
||||
dependencies = [
|
||||
"generic-array 0.14.5",
|
||||
"schemars",
|
||||
"serde",
|
||||
"time 0.3.17",
|
||||
]
|
||||
@@ -2882,7 +2883,7 @@ dependencies = [
|
||||
"authifier",
|
||||
"bson",
|
||||
"futures",
|
||||
"iso8601-timestamp 0.2.10",
|
||||
"iso8601-timestamp 0.2.11",
|
||||
"log",
|
||||
"mongodb",
|
||||
"nanoid",
|
||||
@@ -2948,6 +2949,7 @@ dependencies = [
|
||||
name = "revolt-models"
|
||||
version = "0.6.5"
|
||||
dependencies = [
|
||||
"iso8601-timestamp 0.2.11",
|
||||
"revolt-permissions",
|
||||
"revolt_optional_struct",
|
||||
"schemars",
|
||||
|
||||
@@ -226,6 +226,28 @@ impl From<crate::Metadata> for Metadata {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<crate::Member> for Member {
|
||||
fn from(value: crate::Member) -> Self {
|
||||
Member {
|
||||
id: value.id.into(),
|
||||
joined_at: value.joined_at,
|
||||
nickname: value.nickname,
|
||||
avatar: value.avatar.map(|f| f.into()),
|
||||
roles: value.roles,
|
||||
timeout: value.timeout,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<crate::MemberCompositeKey> for MemberCompositeKey {
|
||||
fn from(value: crate::MemberCompositeKey) -> Self {
|
||||
MemberCompositeKey {
|
||||
server: value.server,
|
||||
user: value.user,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<crate::Server> for Server {
|
||||
fn from(value: crate::Server) -> Self {
|
||||
Server {
|
||||
|
||||
@@ -3,18 +3,18 @@ name = "revolt-models"
|
||||
version = "0.6.5"
|
||||
edition = "2021"
|
||||
license = "AGPL-3.0-or-later"
|
||||
authors = [ "Paul Makles <me@insrt.uk>" ]
|
||||
authors = ["Paul Makles <me@insrt.uk>"]
|
||||
description = "Revolt Backend: API Models"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[features]
|
||||
serde = [ "dep:serde", "revolt-permissions/serde" ]
|
||||
schemas = [ "dep:schemars", "revolt-permissions/schemas" ]
|
||||
validator = [ "dep:validator" ]
|
||||
partials = [ "dep:revolt_optional_struct", "serde", "schemas" ]
|
||||
serde = ["dep:serde", "revolt-permissions/serde"]
|
||||
schemas = ["dep:schemars", "revolt-permissions/schemas"]
|
||||
validator = ["dep:validator"]
|
||||
partials = ["dep:revolt_optional_struct", "serde", "schemas"]
|
||||
|
||||
default = [ "serde", "partials" ]
|
||||
default = ["serde", "partials"]
|
||||
|
||||
[dependencies]
|
||||
# Core
|
||||
@@ -23,6 +23,7 @@ revolt-permissions = { version = "0.6.5", path = "../permissions" }
|
||||
# Serialisation
|
||||
revolt_optional_struct = { version = "0.2.0", optional = true }
|
||||
serde = { version = "1", features = ["derive"], optional = true }
|
||||
iso8601-timestamp = { version = "0.2.11", features = ["schema", "bson"] }
|
||||
|
||||
# Spec Generation
|
||||
schemars = { version = "0.8.8", optional = true }
|
||||
|
||||
@@ -2,6 +2,7 @@ mod bots;
|
||||
mod channel_webhooks;
|
||||
mod channels;
|
||||
mod files;
|
||||
mod server_members;
|
||||
mod servers;
|
||||
mod users;
|
||||
|
||||
@@ -9,5 +10,6 @@ pub use bots::*;
|
||||
pub use channel_webhooks::*;
|
||||
pub use channels::*;
|
||||
pub use files::*;
|
||||
pub use server_members::*;
|
||||
pub use servers::*;
|
||||
pub use users::*;
|
||||
|
||||
42
crates/core/models/src/v0/server_members.rs
Normal file
42
crates/core/models/src/v0/server_members.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
use super::File;
|
||||
|
||||
use iso8601_timestamp::Timestamp;
|
||||
|
||||
auto_derived!(
|
||||
/// Server Member
|
||||
pub struct Member {
|
||||
/// Unique member id
|
||||
#[cfg_attr(feature = "serde", serde(rename = "_id"))]
|
||||
pub id: MemberCompositeKey,
|
||||
|
||||
/// Time at which this user joined the server
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub joined_at: Option<Timestamp>,
|
||||
|
||||
/// Member's nickname
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub nickname: Option<String>,
|
||||
/// Avatar attachment
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub avatar: Option<File>,
|
||||
|
||||
/// Member's roles
|
||||
#[cfg_attr(
|
||||
feature = "serde",
|
||||
serde(skip_serializing_if = "Vec::is_empty", default)
|
||||
)]
|
||||
pub roles: Vec<String>,
|
||||
/// Timestamp this member is timed out until
|
||||
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
|
||||
pub timeout: Option<Timestamp>,
|
||||
}
|
||||
|
||||
/// Composite primary key consisting of server and user id
|
||||
#[derive(Hash, Default)]
|
||||
pub struct MemberCompositeKey {
|
||||
/// Server Id
|
||||
pub server: String,
|
||||
/// User Id
|
||||
pub user: String,
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user