use std::hash::Hash;
use serde::{Deserialize, Serialize};
#[cfg(feature = "typescript")]
use ts_rs::TS;
use crate::{id::TagId, PlatformId, PostId};
#[cfg_attr(feature = "typescript", derive(TS))]
#[cfg_attr(feature = "typescript", ts(export))]
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Hash)]
pub struct Tag {
pub id: TagId,
pub name: String,
pub platform: Option<PlatformId>,
}
#[cfg_attr(feature = "typescript", derive(TS))]
#[cfg_attr(feature = "typescript", ts(export))]
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq, Eq, Hash)]
pub struct PostTag {
pub post: PostId,
pub tag: TagId,
}
#[cfg(feature = "utils")]
mod definitions {
use crate::utils::macros::as_table;
use super::*;
as_table! {
"tags" => Tag {
id: "id",
name: "name",
platform: "platform",
}
"post_tags" => PostTag {
post: "post",
tag: "tag",
}
}
}