X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fdb_schema%2Fsrc%2Flib.rs;h=e3232c402e3feb42ab4ddfbb87700eee47d9f822;hb=9a5a13c734a1792511e1bfef7b9ac4121e0e7371;hp=901ff287aa4c3ed01630d55617f6123243586a5f;hpb=21455d6b73a559e3cbaff894c68d2bf069f06c92;p=lemmy.git diff --git a/crates/db_schema/src/lib.rs b/crates/db_schema/src/lib.rs index 901ff287..e3232c40 100644 --- a/crates/db_schema/src/lib.rs +++ b/crates/db_schema/src/lib.rs @@ -1,21 +1,38 @@ +#![recursion_limit = "256"] + #[cfg(feature = "full")] #[macro_use] extern crate diesel; #[cfg(feature = "full")] #[macro_use] extern crate diesel_derive_newtype; + +#[cfg(feature = "full")] +#[macro_use] +extern crate diesel_derive_enum; + // this is used in tests #[cfg(feature = "full")] -#[allow(unused_imports)] #[macro_use] extern crate diesel_migrations; +#[cfg(feature = "full")] +#[macro_use] +extern crate async_trait; + pub mod aggregates; #[cfg(feature = "full")] pub mod impls; pub mod newtypes; #[cfg(feature = "full")] +#[rustfmt::skip] +#[allow(clippy::wildcard_imports)] pub mod schema; +#[cfg(feature = "full")] +pub mod aliases { + use crate::schema::person; + diesel::alias!(person as person1: Person1, person as person2: Person2); +} pub mod source; #[cfg(feature = "full")] pub mod traits; @@ -24,8 +41,18 @@ pub mod utils; use serde::{Deserialize, Serialize}; use strum_macros::{Display, EnumString}; +#[cfg(feature = "full")] +use ts_rs::TS; -#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)] +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] +#[cfg_attr(feature = "full", derive(DbEnum, TS))] +#[cfg_attr( + feature = "full", + ExistingTypePath = "crate::schema::sql_types::SortTypeEnum" +)] +#[cfg_attr(feature = "full", DbValueStyle = "verbatim")] +#[cfg_attr(feature = "full", ts(export))] +/// The post sort types. See here for descriptions: https://join-lemmy.org/docs/en/users/03-votes-and-ranking.html pub enum SortType { Active, Hot, @@ -38,24 +65,80 @@ pub enum SortType { TopAll, MostComments, NewComments, + TopHour, + TopSixHour, + TopTwelveHour, + TopThreeMonths, + TopSixMonths, + TopNineMonths, + Controversial, } #[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The comment sort types. See here for descriptions: https://join-lemmy.org/docs/en/users/03-votes-and-ranking.html pub enum CommentSortType { Hot, Top, New, Old, + Controversial, } -#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq)] +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The person sort types. See here for descriptions: https://join-lemmy.org/docs/en/users/03-votes-and-ranking.html +pub enum PersonSortType { + New, + Old, + MostComments, + CommentScore, + PostScore, + PostCount, +} + +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] +#[cfg_attr(feature = "full", derive(DbEnum, TS))] +#[cfg_attr( + feature = "full", + ExistingTypePath = "crate::schema::sql_types::ListingTypeEnum" +)] +#[cfg_attr(feature = "full", DbValueStyle = "verbatim")] +#[cfg_attr(feature = "full", ts(export))] +/// A listing type for post and comment list fetches. pub enum ListingType { + /// Content from your own site, as well as all connected / federated sites. All, + /// Content from your site only. Local, + /// Content only from communities you've subscribed to. Subscribed, } +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] +#[cfg_attr(feature = "full", derive(DbEnum, TS))] +#[cfg_attr( + feature = "full", + ExistingTypePath = "crate::schema::sql_types::RegistrationModeEnum" +)] +#[cfg_attr(feature = "full", DbValueStyle = "verbatim")] +#[cfg_attr(feature = "full", ts(export))] +/// The registration mode for your site. Determines what happens after a user signs up. +pub enum RegistrationMode { + /// Closed to public. + Closed, + /// Open, but pending approval of a registration application. + RequireApplication, + /// Open to all. + Open, +} + #[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The type of content returned from a search. pub enum SearchType { All, Comments, @@ -65,19 +148,25 @@ pub enum SearchType { Url, } -#[derive(EnumString, Display, Debug, PartialEq, Serialize, Deserialize, Clone, Copy)] +#[derive(EnumString, Display, Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A type / status for a community subscribe. pub enum SubscribedType { Subscribed, NotSubscribed, Pending, } -#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq)] +#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A list of possible types for the various modlog actions. pub enum ModlogActionType { All, ModRemovePost, ModLockPost, - ModStickyPost, + ModFeaturePost, ModRemoveComment, ModRemoveCommunity, ModBanFromCommunity, @@ -91,3 +180,17 @@ pub enum ModlogActionType { AdminPurgePost, AdminPurgeComment, } + +#[derive( + EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, Default, PartialEq, Eq, +)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The feature type for a post. +pub enum PostFeatureType { + #[default] + /// Features to the top of your site. + Local, + /// Features to the top of the community. + Community, +}