1 use diesel_ltree::Ltree;
2 use serde::{Deserialize, Serialize};
5 fmt::{Display, Formatter},
10 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Default, Serialize, Deserialize)]
11 #[cfg_attr(feature = "full", derive(DieselNewType))]
12 pub struct PostId(pub i32);
14 impl fmt::Display for PostId {
15 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16 write!(f, "{}", self.0)
20 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Default, Serialize, Deserialize)]
21 #[cfg_attr(feature = "full", derive(DieselNewType))]
22 pub struct PersonId(pub i32);
24 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
25 #[cfg_attr(feature = "full", derive(DieselNewType))]
26 pub struct CommentId(pub i32);
28 impl fmt::Display for CommentId {
29 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
30 write!(f, "{}", self.0)
34 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Default, Serialize, Deserialize)]
35 #[cfg_attr(feature = "full", derive(DieselNewType))]
36 pub struct CommunityId(pub i32);
38 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Default, Serialize, Deserialize)]
39 #[cfg_attr(feature = "full", derive(DieselNewType))]
40 pub struct LocalUserId(pub i32);
42 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
43 #[cfg_attr(feature = "full", derive(DieselNewType))]
44 pub struct PrivateMessageId(i32);
46 impl fmt::Display for PrivateMessageId {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 write!(f, "{}", self.0)
52 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
53 #[cfg_attr(feature = "full", derive(DieselNewType))]
54 pub struct PersonMentionId(i32);
56 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
57 #[cfg_attr(feature = "full", derive(DieselNewType))]
58 pub struct PersonBlockId(i32);
60 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
61 #[cfg_attr(feature = "full", derive(DieselNewType))]
62 pub struct CommunityBlockId(i32);
64 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
65 #[cfg_attr(feature = "full", derive(DieselNewType))]
66 pub struct CommentReportId(i32);
68 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
69 #[cfg_attr(feature = "full", derive(DieselNewType))]
70 pub struct PostReportId(i32);
72 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
73 #[cfg_attr(feature = "full", derive(DieselNewType))]
74 pub struct PrivateMessageReportId(i32);
76 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
77 #[cfg_attr(feature = "full", derive(DieselNewType))]
78 pub struct SiteId(i32);
80 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
81 #[cfg_attr(feature = "full", derive(DieselNewType))]
82 pub struct LanguageId(pub i32);
84 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
85 #[cfg_attr(feature = "full", derive(DieselNewType))]
86 pub struct LocalUserLanguageId(pub i32);
88 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
89 #[cfg_attr(feature = "full", derive(DieselNewType))]
90 pub struct SiteLanguageId(pub i32);
92 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
93 #[cfg_attr(feature = "full", derive(DieselNewType))]
94 pub struct CommunityLanguageId(pub i32);
96 #[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
97 #[cfg_attr(feature = "full", derive(DieselNewType))]
98 pub struct CommentReplyId(i32);
101 #[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Debug)]
102 #[cfg_attr(feature = "full", derive(AsExpression, FromSqlRow))]
103 #[cfg_attr(feature = "full", diesel(sql_type = diesel::sql_types::Text))]
104 pub struct DbUrl(pub(crate) Url);
106 #[derive(Serialize, Deserialize)]
107 #[serde(remote = "Ltree")]
108 /// Do remote derivation for the Ltree struct
109 pub struct LtreeDef(pub String);
111 impl Display for DbUrl {
112 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
113 self.to_owned().0.fmt(f)
117 // the project doesnt compile with From
118 #[allow(clippy::from_over_into)]
119 impl Into<DbUrl> for Url {
120 fn into(self) -> DbUrl {
124 #[allow(clippy::from_over_into)]
125 impl Into<Url> for DbUrl {
126 fn into(self) -> Url {
131 impl Deref for DbUrl {
134 fn deref(&self) -> &Self::Target {