tetratto_core/model/
reactions.rs1use serde::{Deserialize, Serialize};
2use tetratto_shared::{snow::Snowflake, unix_epoch_timestamp};
3
4#[derive(Clone, Serialize, Deserialize, PartialEq, Eq)]
6pub enum AssetType {
7 #[serde(alias = "community")]
8 Community,
9 #[serde(alias = "post")]
10 Post,
11 #[serde(alias = "question")]
12 Question,
13 #[serde(alias = "user")]
14 User,
15 #[serde(alias = "letter")]
16 Letter,
17}
18
19#[derive(Clone, Serialize, Deserialize)]
20pub struct Reaction {
21 pub id: usize,
22 pub created: usize,
23 pub owner: usize,
24 pub asset: usize,
25 pub asset_type: AssetType,
26 pub is_like: bool,
27}
28
29impl Reaction {
30 pub fn new(owner: usize, asset: usize, asset_type: AssetType, is_like: bool) -> Self {
32 Self {
33 id: Snowflake::new().to_string().parse::<usize>().unwrap(),
34 created: unix_epoch_timestamp(),
35 owner,
36 asset,
37 asset_type,
38 is_like,
39 }
40 }
41}