Skip to main content

nexus_common/models/tag/
user.rs

1use crate::db::RedisOps;
2use async_trait::async_trait;
3use serde::{Deserialize, Serialize};
4use utoipa::ToSchema;
5
6use super::traits::{TagCollection, TaggersCollection};
7
8pub const USER_TAGS_KEY_PARTS: [&str; 2] = ["Users", "Tag"];
9
10#[derive(Serialize, Deserialize, Debug, Clone, ToSchema, Default)]
11pub struct TagUser(pub Vec<String>);
12
13impl AsRef<[String]> for TagUser {
14    fn as_ref(&self) -> &[String] {
15        &self.0
16    }
17}
18
19#[async_trait]
20impl RedisOps for TagUser {
21    async fn prefix() -> String {
22        String::from("User:Taggers")
23    }
24}
25
26impl TagCollection for TagUser {
27    fn get_tag_prefix<'a>() -> [&'a str; 2] {
28        USER_TAGS_KEY_PARTS
29    }
30}
31
32impl TaggersCollection for TagUser {}