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