magnetar/src/model/mod.rs

41 lines
891 B
Rust

use crate::service::MagnetarService;
use magnetar_calckey_model::ck;
use std::sync::Arc;
pub mod data;
pub mod processing;
#[derive(Clone, Debug)]
pub struct ProcessingLimits {
max_emojis: usize,
}
impl Default for ProcessingLimits {
fn default() -> Self {
ProcessingLimits { max_emojis: 500 }
}
}
#[derive(Clone, Debug)]
pub struct PackingContext {
instance_meta: Arc<ck::meta::Model>,
self_user: Option<Arc<ck::user::Model>>,
service: Arc<MagnetarService>,
limits: ProcessingLimits,
}
pub trait PackType<I>: 'static {
fn extract(context: &PackingContext, data: I) -> Self;
}
impl PackingContext {
fn self_user(&self) -> Option<&ck::user::Model> {
self.self_user.as_deref()
}
fn is_self(&self, user: &ck::user::Model) -> bool {
self.self_user()
.is_some_and(|self_user| self_user.id == user.id)
}
}