#[cfg(feature = "full")]
#[macro_use]
extern crate diesel;
#[cfg(feature = "full")]
#[macro_use]
extern crate diesel_derive_newtype;
#[cfg(feature = "full")]
pub mod impls;
pub mod newtypes;
pub mod source;
#[cfg(feature = "full")]
pub mod test_data;
#[cfg(feature = "full")]
pub mod traits;
#[cfg(feature = "full")]
pub mod utils;
use lemmy_db_schema_file::enums::{ModlogKind, NotificationType};
use serde::{Deserialize, Serialize};
use strum::{Display, EnumString};
#[cfg(feature = "full")]
use {
diesel::query_source::AliasedField,
lemmy_db_schema_file::{
aliases,
schema::{instance_actions, person},
},
};
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum CommunitySortType {
ActiveSixMonths,
#[default]
ActiveMonthly,
ActiveWeekly,
ActiveDaily,
Hot,
New,
Old,
NameAsc,
NameDesc,
Comments,
Posts,
Subscribers,
SubscribersLocal,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum LocalUserSortType {
#[default]
New,
Old,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum ReportSortType {
#[default]
Default,
New,
Old,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum PersonSortType {
#[default]
New,
Old,
PostScore,
CommentScore,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum MultiCommunitySortType {
New,
Old,
NameAsc,
NameDesc,
Communities,
#[default]
Subscribers,
SubscribersLocal,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum MultiCommunityListingType {
All,
#[default]
Local,
Subscribed,
}
#[derive(
EnumString, Display, Debug, Serialize, Deserialize, Default, Clone, Copy, PartialEq, Eq, Hash,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum SearchType {
#[default]
All,
Comments,
Posts,
Communities,
Users,
MultiCommunities,
}
#[derive(Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum PersonListingType {
All,
#[default]
Local,
}
#[derive(
EnumString, Display, Debug, Serialize, Deserialize, Default, Clone, Copy, PartialEq, Eq, Hash,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum NotificationTypeFilter {
#[default]
All,
#[serde(untagged)]
Other(NotificationType),
}
#[derive(
EnumString, Display, Debug, Serialize, Deserialize, Default, Clone, Copy, PartialEq, Eq, Hash,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum ModlogKindFilter {
#[default]
All,
#[serde(untagged)]
Other(ModlogKind),
}
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum PersonContentType {
All,
Comments,
Posts,
}
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, Hash)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum ReportType {
All,
Posts,
Comments,
PrivateMessages,
Communities,
}
#[derive(
EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum PostFeatureType {
#[default]
Local,
Community,
}
#[derive(
EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, Hash,
)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
#[cfg_attr(feature = "ts-rs", ts(export))]
pub enum LikeType {
#[default]
All,
LikedOnly,
DislikedOnly,
}
#[macro_export]
macro_rules! assert_length {
($len:expr, $vec:expr) => {{ assert_eq!($len, $vec.len(), "Vec has wrong length: {:?}", $vec) }};
}
#[cfg(feature = "full")]
pub type Person1AliasAllColumnsTuple = (
AliasedField<aliases::Person1, person::id>,
AliasedField<aliases::Person1, person::name>,
AliasedField<aliases::Person1, person::display_name>,
AliasedField<aliases::Person1, person::avatar>,
AliasedField<aliases::Person1, person::published_at>,
AliasedField<aliases::Person1, person::updated_at>,
AliasedField<aliases::Person1, person::ap_id>,
AliasedField<aliases::Person1, person::bio>,
AliasedField<aliases::Person1, person::local>,
AliasedField<aliases::Person1, person::private_key>,
AliasedField<aliases::Person1, person::public_key>,
AliasedField<aliases::Person1, person::last_refreshed_at>,
AliasedField<aliases::Person1, person::banner>,
AliasedField<aliases::Person1, person::deleted>,
AliasedField<aliases::Person1, person::inbox_url>,
AliasedField<aliases::Person1, person::matrix_user_id>,
AliasedField<aliases::Person1, person::bot_account>,
AliasedField<aliases::Person1, person::instance_id>,
AliasedField<aliases::Person1, person::post_count>,
AliasedField<aliases::Person1, person::post_score>,
AliasedField<aliases::Person1, person::comment_count>,
AliasedField<aliases::Person1, person::comment_score>,
);
#[cfg(feature = "full")]
pub type Person2AliasAllColumnsTuple = (
AliasedField<aliases::Person2, person::id>,
AliasedField<aliases::Person2, person::name>,
AliasedField<aliases::Person2, person::display_name>,
AliasedField<aliases::Person2, person::avatar>,
AliasedField<aliases::Person2, person::published_at>,
AliasedField<aliases::Person2, person::updated_at>,
AliasedField<aliases::Person2, person::ap_id>,
AliasedField<aliases::Person2, person::bio>,
AliasedField<aliases::Person2, person::local>,
AliasedField<aliases::Person2, person::private_key>,
AliasedField<aliases::Person2, person::public_key>,
AliasedField<aliases::Person2, person::last_refreshed_at>,
AliasedField<aliases::Person2, person::banner>,
AliasedField<aliases::Person2, person::deleted>,
AliasedField<aliases::Person2, person::inbox_url>,
AliasedField<aliases::Person2, person::matrix_user_id>,
AliasedField<aliases::Person2, person::bot_account>,
AliasedField<aliases::Person2, person::instance_id>,
AliasedField<aliases::Person2, person::post_count>,
AliasedField<aliases::Person2, person::post_score>,
AliasedField<aliases::Person2, person::comment_count>,
AliasedField<aliases::Person2, person::comment_score>,
);
#[cfg(feature = "full")]
pub type MyInstancePersonsActionsAllColumnsTuple = (
AliasedField<aliases::MyInstancePersonsActions, instance_actions::blocked_communities_at>,
AliasedField<aliases::MyInstancePersonsActions, instance_actions::person_id>,
AliasedField<aliases::MyInstancePersonsActions, instance_actions::instance_id>,
AliasedField<aliases::MyInstancePersonsActions, instance_actions::received_ban_at>,
AliasedField<aliases::MyInstancePersonsActions, instance_actions::ban_expires_at>,
AliasedField<aliases::MyInstancePersonsActions, instance_actions::blocked_persons_at>,
);