diff --git a/api_tests/src/shared.ts b/api_tests/src/shared.ts index 32179eeb2919274bc3734f3b0a0486dd81f118e5..65effc6273f432e2b9fa14e89ba47781ff9ebdd3 100644 --- a/api_tests/src/shared.ts +++ b/api_tests/src/shared.ts @@ -586,7 +586,6 @@ export async function listPrivateMessages( let form: GetPrivateMessages = { auth: api.auth, unread_only: false, - limit: 999, }; return api.client.getPrivateMessages(form); } diff --git a/api_tests/src/user.spec.ts b/api_tests/src/user.spec.ts index 29029ac1e9d231ad212e1bcb10f08024b5e50264..bce36e2af54c3af3db8256f7d04793f3dc7974b0 100644 --- a/api_tests/src/user.spec.ts +++ b/api_tests/src/user.spec.ts @@ -7,7 +7,6 @@ import { saveUserSettings, getSite, createPost, - gamma, resolveCommunity, createComment, resolveBetaCommunity, diff --git a/crates/api/src/local_user/notifications/mark_all_read.rs b/crates/api/src/local_user/notifications/mark_all_read.rs index 3925e7913f45076445633381bb6df4e56ceb599e..9d79acf7937f79ea35ca021a087e2dab598aa198 100644 --- a/crates/api/src/local_user/notifications/mark_all_read.rs +++ b/crates/api/src/local_user/notifications/mark_all_read.rs @@ -34,7 +34,7 @@ impl Perform for MarkAllAsRead { .recipient_id(person_id) .unread_only(true) .page(1) - .limit(999) + .limit(std::i64::MAX) .list() }) .await??; diff --git a/crates/api_common/src/utils.rs b/crates/api_common/src/utils.rs index e96325cfd5a2055d22302a8928030b0849771cf8..6e82a117ca52e273137118b9d874f154037d7404 100644 --- a/crates/api_common/src/utils.rs +++ b/crates/api_common/src/utils.rs @@ -15,6 +15,7 @@ use lemmy_db_schema::{ }, traits::{Crud, Readable}, utils::DbPool, + ListingType, }; use lemmy_db_views::{ comment_view::CommentQueryBuilder, @@ -34,6 +35,7 @@ use lemmy_utils::{ }; use reqwest_middleware::ClientWithMiddleware; use rosetta_i18n::{Language, LanguageId}; +use std::str::FromStr; use tracing::warn; pub async fn blocking<F, T>(pool: &DbPool, f: F) -> Result<T, LemmyError> @@ -716,3 +718,16 @@ pub async fn delete_user_account( Ok(()) } + +pub async fn listing_type_with_site_default( + listing_type: Option<ListingType>, + pool: &DbPool, +) -> Result<ListingType, LemmyError> { + Ok(match listing_type { + Some(l) => l, + None => { + let site = blocking(pool, Site::read_local_site).await??; + ListingType::from_str(&site.default_post_listing_type)? + } + }) +} diff --git a/crates/api_crud/src/comment/list.rs b/crates/api_crud/src/comment/list.rs index 6b949ab6abcdd20d83d9c2bf706409ecd526a04c..87262dce7629f89508713325996e64656c04693d 100644 --- a/crates/api_crud/src/comment/list.rs +++ b/crates/api_crud/src/comment/list.rs @@ -2,7 +2,12 @@ use crate::PerformCrud; use actix_web::web::Data; use lemmy_api_common::{ comment::{GetComments, GetCommentsResponse}, - utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt}, + utils::{ + blocking, + check_private_instance, + get_local_user_view_from_jwt_opt, + listing_type_with_site_default, + }, }; use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubCommunity}; use lemmy_db_schema::{source::community::Community, traits::DeleteableOrRemoveable}; @@ -33,6 +38,8 @@ impl PerformCrud for GetComments { let person_id = local_user_view.map(|u| u.person.id); let community_id = data.community_id; + let listing_type = listing_type_with_site_default(data.type_, context.pool()).await?; + let community_actor_id = if let Some(name) = &data.community_name { resolve_actor_identifier::<ApubCommunity, Community>(name, context) .await @@ -42,7 +49,6 @@ impl PerformCrud for GetComments { None }; let sort = data.sort; - let listing_type = data.type_; let saved_only = data.saved_only; let page = data.page; let limit = data.limit; diff --git a/crates/api_crud/src/community/read.rs b/crates/api_crud/src/community/read.rs index 8b9c1bdb55674e7321af4a19fca3aba46dc62e69..32668b02bd9ac9facbe0234283d3b714c3b9e6fa 100644 --- a/crates/api_crud/src/community/read.rs +++ b/crates/api_crud/src/community/read.rs @@ -31,6 +31,10 @@ impl PerformCrud for GetCommunity { get_local_user_view_from_jwt_opt(data.auth.as_ref(), context.pool(), context.secret()) .await?; + if data.name.is_none() && data.id.is_none() { + return Err(LemmyError::from_message("no_id_given")); + } + check_private_instance(&local_user_view, context.pool()).await?; let person_id = local_user_view.map(|u| u.person.id); diff --git a/crates/api_crud/src/post/list.rs b/crates/api_crud/src/post/list.rs index 90806cf204ad6509335e50ab0d59cc6fb2c9b95a..1af4f55bf450b0f7db3fe3ad230b4757bb6cad7c 100644 --- a/crates/api_crud/src/post/list.rs +++ b/crates/api_crud/src/post/list.rs @@ -2,18 +2,18 @@ use crate::PerformCrud; use actix_web::web::Data; use lemmy_api_common::{ post::{GetPosts, GetPostsResponse}, - utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt}, + utils::{ + blocking, + check_private_instance, + get_local_user_view_from_jwt_opt, + listing_type_with_site_default, + }, }; use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubCommunity}; -use lemmy_db_schema::{ - source::{community::Community, site::Site}, - traits::DeleteableOrRemoveable, - ListingType, -}; +use lemmy_db_schema::{source::community::Community, traits::DeleteableOrRemoveable}; use lemmy_db_views::post_view::PostQueryBuilder; use lemmy_utils::{error::LemmyError, ConnectionId}; use lemmy_websocket::LemmyContext; -use std::str::FromStr; #[async_trait::async_trait(?Send)] impl PerformCrud for GetPosts { @@ -43,13 +43,8 @@ impl PerformCrud for GetPosts { .map(|t| t.local_user.show_read_posts); let sort = data.sort; - let listing_type: ListingType = match data.type_ { - Some(l) => l, - None => { - let site = blocking(context.pool(), Site::read_local_site).await??; - ListingType::from_str(&site.default_post_listing_type)? - } - }; + let listing_type = listing_type_with_site_default(data.type_, context.pool()).await?; + let page = data.page; let limit = data.limit; let community_id = data.community_id; diff --git a/crates/api_crud/src/post/read.rs b/crates/api_crud/src/post/read.rs index 36a0b290b294429d855007686d9f8021ee65da74..801cfbd040376c9b1c92f3a80fd9197036060761 100644 --- a/crates/api_crud/src/post/read.rs +++ b/crates/api_crud/src/post/read.rs @@ -50,7 +50,7 @@ impl PerformCrud for GetPost { .my_person_id(person_id) .show_bot_accounts(show_bot_accounts) .post_id(id) - .limit(9999) + .limit(std::i64::MAX) .list() }) .await??; diff --git a/crates/api_crud/src/user/read.rs b/crates/api_crud/src/user/read.rs index ecfd45e093c23d6dfb265082ea5e5be7bd1ff302..426c44056a26b2b44c445db2a5c87e0056e1eb2f 100644 --- a/crates/api_crud/src/user/read.rs +++ b/crates/api_crud/src/user/read.rs @@ -22,6 +22,12 @@ impl PerformCrud for GetPersonDetails { _websocket_id: Option<ConnectionId>, ) -> Result<GetPersonDetailsResponse, LemmyError> { let data: &GetPersonDetails = self; + + // Check to make sure a person name or an id is given + if data.username.is_none() && data.person_id.is_none() { + return Err(LemmyError::from_message("no_id_given")); + } + let local_user_view = get_local_user_view_from_jwt_opt(data.auth.as_ref(), context.pool(), context.secret()) .await?; diff --git a/crates/db_schema/src/impls/post.rs b/crates/db_schema/src/impls/post.rs index 9996734169ef5da41017954b2ce4a605854e4bd2..d616229a20a4a96d78e2ea5399beb1d7e0f4bd3a 100644 --- a/crates/db_schema/src/impls/post.rs +++ b/crates/db_schema/src/impls/post.rs @@ -11,7 +11,7 @@ use crate::{ PostSavedForm, }, traits::{Crud, DeleteableOrRemoveable, Likeable, Readable, Saveable}, - utils::naive_now, + utils::{naive_now, FETCH_LIMIT_MAX}, }; use diesel::{dsl::*, result::Error, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl, *}; use url::Url; @@ -54,7 +54,7 @@ impl Post { .filter(removed.eq(false)) .then_order_by(published.desc()) .then_order_by(stickied.desc()) - .limit(20) + .limit(FETCH_LIMIT_MAX) .load::<Self>(conn) } diff --git a/crates/db_schema/src/utils.rs b/crates/db_schema/src/utils.rs index c9ccc170089c3fcde6a949a908e76937dd1279b5..bd9435e3ef93df3fbe96821de64854f04cf6371d 100644 --- a/crates/db_schema/src/utils.rs +++ b/crates/db_schema/src/utils.rs @@ -4,6 +4,7 @@ use chrono::NaiveDateTime; use diesel::{ backend::Backend, deserialize::FromSql, + result::Error::QueryBuilderError, serialize::{Output, ToSql}, sql_types::Text, Connection, @@ -15,6 +16,9 @@ use regex::Regex; use std::{env, env::VarError, io::Write}; use url::Url; +const FETCH_LIMIT_DEFAULT: i64 = 10; +pub const FETCH_LIMIT_MAX: i64 = 50; + pub type DbPool = diesel::r2d2::Pool<diesel::r2d2::ConnectionManager<diesel::PgConnection>>; pub fn get_database_url_from_env() -> Result<String, VarError> { @@ -26,10 +30,39 @@ pub fn fuzzy_search(q: &str) -> String { format!("%{}%", replaced) } -pub fn limit_and_offset(page: Option<i64>, limit: Option<i64>) -> (i64, i64) { - let page = page.unwrap_or(1); - let limit = limit.unwrap_or(10); +pub fn limit_and_offset( + page: Option<i64>, + limit: Option<i64>, +) -> Result<(i64, i64), diesel::result::Error> { + let page = match page { + Some(page) => { + if page < 1 { + return Err(QueryBuilderError("Page is < 1".into())); + } else { + page + } + } + None => 1, + }; + let limit = match limit { + Some(limit) => { + if !(1..=FETCH_LIMIT_MAX).contains(&limit) { + return Err(QueryBuilderError( + format!("Fetch limit is > {}", FETCH_LIMIT_MAX).into(), + )); + } else { + limit + } + } + None => FETCH_LIMIT_DEFAULT, + }; let offset = limit * (page - 1); + Ok((limit, offset)) +} + +pub fn limit_and_offset_unlimited(page: Option<i64>, limit: Option<i64>) -> (i64, i64) { + let limit = limit.unwrap_or(FETCH_LIMIT_DEFAULT); + let offset = limit * (page.unwrap_or(1) - 1); (limit, offset) } diff --git a/crates/db_views/src/comment_report_view.rs b/crates/db_views/src/comment_report_view.rs index bca8afdc007293e68f87d1655faac0ae73070982..946503efe2beb6b667b5f73fd1e2ad560bc53a0c 100644 --- a/crates/db_views/src/comment_report_view.rs +++ b/crates/db_views/src/comment_report_view.rs @@ -256,7 +256,7 @@ impl<'a> CommentReportQueryBuilder<'a> { query = query.filter(comment_report::resolved.eq(false)); } - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; query = query .order_by(comment_report::published.desc()) diff --git a/crates/db_views/src/comment_view.rs b/crates/db_views/src/comment_view.rs index 2852a6ca64106a0f42158bb0e9a831d5cb256948..6a665975caef7e97ba9c7a99e4f7af1c31e3554f 100644 --- a/crates/db_views/src/comment_view.rs +++ b/crates/db_views/src/comment_view.rs @@ -1,5 +1,9 @@ use crate::structs::CommentView; -use diesel::{dsl::*, result::Error, *}; +use diesel::{ + dsl::*, + result::{Error, Error::QueryBuilderError}, + *, +}; use lemmy_db_schema::{ aggregates::structs::CommentAggregates, newtypes::{CommentId, CommunityId, DbUrl, PersonId, PostId}, @@ -26,7 +30,7 @@ use lemmy_db_schema::{ post::Post, }, traits::{MaybeOptional, ToSafe, ViewToVec}, - utils::{functions::hot_rank, fuzzy_search, limit_and_offset}, + utils::{functions::hot_rank, fuzzy_search, limit_and_offset_unlimited}, ListingType, SortType, }; @@ -414,14 +418,6 @@ impl<'a> CommentQueryBuilder<'a> { query = query.filter(comment::creator_id.eq(creator_id)); }; - if let Some(community_id) = self.community_id { - query = query.filter(post::community_id.eq(community_id)); - } - - if let Some(community_actor_id) = self.community_actor_id { - query = query.filter(community::actor_id.eq(community_actor_id)) - } - if let Some(post_id) = self.post_id { query = query.filter(comment::post_id.eq(post_id)); }; @@ -449,9 +445,21 @@ impl<'a> CommentQueryBuilder<'a> { .or(community_follower::person_id.eq(person_id_join)), ) } - ListingType::Community => {} - }; - } + ListingType::Community => { + if self.community_actor_id.is_none() && self.community_id.is_none() { + return Err(QueryBuilderError("No community actor or id given".into())); + } else { + if let Some(community_id) = self.community_id { + query = query.filter(post::community_id.eq(community_id)); + } + + if let Some(community_actor_id) = self.community_actor_id { + query = query.filter(community::actor_id.eq(community_actor_id)) + } + } + } + } + }; if self.saved_only.unwrap_or(false) { query = query.filter(comment_saved::id.is_not_null()); @@ -489,7 +497,8 @@ impl<'a> CommentQueryBuilder<'a> { query = query.filter(person_block::person_id.is_null()); } - let (limit, offset) = limit_and_offset(self.page, self.limit); + // Don't use the regular error-checking one, many more comments must ofter be fetched. + let (limit, offset) = limit_and_offset_unlimited(self.page, self.limit); // Note: deleted and removed comments are done on the front side let res = query diff --git a/crates/db_views/src/post_report_view.rs b/crates/db_views/src/post_report_view.rs index 9769ec02106085b01720a80dd9b6598be9c0dc03..64550d214e6fab6f0b84849f0625fdeed4b37755 100644 --- a/crates/db_views/src/post_report_view.rs +++ b/crates/db_views/src/post_report_view.rs @@ -241,7 +241,7 @@ impl<'a> PostReportQueryBuilder<'a> { query = query.filter(post_report::resolved.eq(false)); } - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; query = query .order_by(post_report::published.desc()) diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs index 8b02c91a301c03ae5198e21cecbdafe280d49fdc..65b177cb139042a8eb2d32bf1bac7154dd048b2a 100644 --- a/crates/db_views/src/post_view.rs +++ b/crates/db_views/src/post_view.rs @@ -1,5 +1,10 @@ use crate::structs::PostView; -use diesel::{dsl::*, pg::Pg, result::Error, *}; +use diesel::{ + dsl::*, + pg::Pg, + result::{Error, Error::QueryBuilderError}, + *, +}; use lemmy_db_schema::{ aggregates::structs::PostAggregates, newtypes::{CommunityId, DbUrl, PersonId, PostId}, @@ -358,21 +363,25 @@ impl<'a> PostQueryBuilder<'a> { ) } ListingType::Community => { - if let Some(community_id) = self.community_id { - query = query - .filter(post::community_id.eq(community_id)) - .then_order_by(post_aggregates::stickied.desc()); + if self.community_actor_id.is_none() && self.community_id.is_none() { + return Err(QueryBuilderError("No community actor or id given".into())); + } else { + if let Some(community_id) = self.community_id { + query = query + .filter(post::community_id.eq(community_id)) + .then_order_by(post_aggregates::stickied.desc()); + } + + if let Some(community_actor_id) = self.community_actor_id { + query = query + .filter(community::actor_id.eq(community_actor_id)) + .then_order_by(post_aggregates::stickied.desc()); + } } } } } - if let Some(community_actor_id) = self.community_actor_id { - query = query - .filter(community::actor_id.eq(community_actor_id)) - .then_order_by(post_aggregates::stickied.desc()); - } - if let Some(url_search) = self.url_search { query = query.filter(post::url.eq(url_search)); } @@ -455,7 +464,7 @@ impl<'a> PostQueryBuilder<'a> { .then_order_by(post_aggregates::published.desc()), }; - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; query = query .limit(limit) diff --git a/crates/db_views/src/private_message_view.rs b/crates/db_views/src/private_message_view.rs index fdf5b8e1471c231da63da86da6987341b041910f..185bd30224d747a3cd069b8ae1b54bfdc1ac7fe9 100644 --- a/crates/db_views/src/private_message_view.rs +++ b/crates/db_views/src/private_message_view.rs @@ -107,7 +107,7 @@ impl<'a> PrivateMessageQueryBuilder<'a> { ) } - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; query = query .filter(private_message::deleted.eq(false)) diff --git a/crates/db_views/src/registration_application_view.rs b/crates/db_views/src/registration_application_view.rs index 00c79323b91196d837b746636e4e949ce3c6406e..2e3724d14896e6fd5a2b278c4e98165ba7f73cc1 100644 --- a/crates/db_views/src/registration_application_view.rs +++ b/crates/db_views/src/registration_application_view.rs @@ -134,7 +134,7 @@ impl<'a> RegistrationApplicationQueryBuilder<'a> { query = query.filter(local_user::email_verified.eq(true)) } - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; query = query .limit(limit) diff --git a/crates/db_views_actor/src/community_view.rs b/crates/db_views_actor/src/community_view.rs index 99546992bf33d596cc5afc1c676e1e838fc9a4e8..21a71725870018145380d17245ec4d2815cecff2 100644 --- a/crates/db_views_actor/src/community_view.rs +++ b/crates/db_views_actor/src/community_view.rs @@ -242,7 +242,7 @@ impl<'a> CommunityQueryBuilder<'a> { } } - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; let res = query .limit(limit) .offset(offset) diff --git a/crates/db_views_actor/src/person_mention_view.rs b/crates/db_views_actor/src/person_mention_view.rs index d65c165c350e4a6b88cd2e569d9720534ebabada..8b92c2f9aed08477759ba16a2c38716c300165fb 100644 --- a/crates/db_views_actor/src/person_mention_view.rs +++ b/crates/db_views_actor/src/person_mention_view.rs @@ -311,7 +311,7 @@ impl<'a> PersonMentionQueryBuilder<'a> { .order_by(comment_aggregates::score.desc()), }; - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; let res = query .limit(limit) diff --git a/crates/db_views_actor/src/person_view.rs b/crates/db_views_actor/src/person_view.rs index 83886a190331fb467ac64113e974c2dfe6c56459..307f02484c08490c0860249d7e003ccead398b11 100644 --- a/crates/db_views_actor/src/person_view.rs +++ b/crates/db_views_actor/src/person_view.rs @@ -124,7 +124,7 @@ impl<'a> PersonQueryBuilder<'a> { .order_by(person_aggregates::comment_score.desc()), }; - let (limit, offset) = limit_and_offset(self.page, self.limit); + let (limit, offset) = limit_and_offset(self.page, self.limit)?; query = query.limit(limit).offset(offset); let res = query.load::<PersonViewSafeTuple>(self.conn)?; diff --git a/crates/db_views_moderator/src/admin_purge_comment_view.rs b/crates/db_views_moderator/src/admin_purge_comment_view.rs index b8c8f7456ba32a29027dda5ad01750b644e30042..c2928de6497c493fbbfc702d63d608aa50ffb8f0 100644 --- a/crates/db_views_moderator/src/admin_purge_comment_view.rs +++ b/crates/db_views_moderator/src/admin_purge_comment_view.rs @@ -35,7 +35,7 @@ impl AdminPurgeCommentView { query = query.filter(admin_purge_comment::admin_person_id.eq(admin_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/admin_purge_community_view.rs b/crates/db_views_moderator/src/admin_purge_community_view.rs index 0c40a3963c6302cfedf7ed9ef14c49b938e84407..20903efcc4de1d893ca7613b1ad50006642e886c 100644 --- a/crates/db_views_moderator/src/admin_purge_community_view.rs +++ b/crates/db_views_moderator/src/admin_purge_community_view.rs @@ -32,7 +32,7 @@ impl AdminPurgeCommunityView { query = query.filter(admin_purge_community::admin_person_id.eq(admin_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/admin_purge_person_view.rs b/crates/db_views_moderator/src/admin_purge_person_view.rs index 9828e432c81a34baa837369595b72b4444b9f4a6..e6ab093b9776f436fd148878188cab2924d74930 100644 --- a/crates/db_views_moderator/src/admin_purge_person_view.rs +++ b/crates/db_views_moderator/src/admin_purge_person_view.rs @@ -32,7 +32,7 @@ impl AdminPurgePersonView { query = query.filter(admin_purge_person::admin_person_id.eq(admin_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/admin_purge_post_view.rs b/crates/db_views_moderator/src/admin_purge_post_view.rs index 6665e467552a74c1a31781bc9af9b170329374e8..981d51b3d6e967b3eebe6607db1e37630c5feddd 100644 --- a/crates/db_views_moderator/src/admin_purge_post_view.rs +++ b/crates/db_views_moderator/src/admin_purge_post_view.rs @@ -35,7 +35,7 @@ impl AdminPurgePostView { query = query.filter(admin_purge_post::admin_person_id.eq(admin_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_add_community_view.rs b/crates/db_views_moderator/src/mod_add_community_view.rs index 55bb9d99b33a2c2480ca0c5512ee5e2e88dd2611..32fe7c777603b3fca8ef8f306f39fe55ca44bbbc 100644 --- a/crates/db_views_moderator/src/mod_add_community_view.rs +++ b/crates/db_views_moderator/src/mod_add_community_view.rs @@ -44,7 +44,7 @@ impl ModAddCommunityView { query = query.filter(mod_add_community::community_id.eq(community_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_add_view.rs b/crates/db_views_moderator/src/mod_add_view.rs index 5b48d006682a614ea7b9ac43ea3288262a8a648d..874615a8e18b7dc3fb0506bf8bdf6625b4e5e0ac 100644 --- a/crates/db_views_moderator/src/mod_add_view.rs +++ b/crates/db_views_moderator/src/mod_add_view.rs @@ -34,7 +34,7 @@ impl ModAddView { query = query.filter(mod_add::mod_person_id.eq(mod_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_ban_from_community_view.rs b/crates/db_views_moderator/src/mod_ban_from_community_view.rs index 9e44e4797a5560b112e1b8f0fb1604cb0062e4b8..f5ce3fa9021a6ce5046887bad110c5b8384d78c0 100644 --- a/crates/db_views_moderator/src/mod_ban_from_community_view.rs +++ b/crates/db_views_moderator/src/mod_ban_from_community_view.rs @@ -49,7 +49,7 @@ impl ModBanFromCommunityView { query = query.filter(mod_ban_from_community::community_id.eq(community_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_ban_view.rs b/crates/db_views_moderator/src/mod_ban_view.rs index a36adaad074b093449c027ad9ef97cafe9d277e3..06e610deb0531d33a5613679a7d317f73d0f63e3 100644 --- a/crates/db_views_moderator/src/mod_ban_view.rs +++ b/crates/db_views_moderator/src/mod_ban_view.rs @@ -34,7 +34,7 @@ impl ModBanView { query = query.filter(mod_ban::mod_person_id.eq(mod_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_hide_community_view.rs b/crates/db_views_moderator/src/mod_hide_community_view.rs index a838056227a4d5157e5c99c1a4e086016fe01498..ce0a3e73f9fb7397c0d2ad22fa0a13e22170ef44 100644 --- a/crates/db_views_moderator/src/mod_hide_community_view.rs +++ b/crates/db_views_moderator/src/mod_hide_community_view.rs @@ -41,7 +41,7 @@ impl ModHideCommunityView { query = query.filter(mod_hide_community::mod_person_id.eq(admin_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_lock_post_view.rs b/crates/db_views_moderator/src/mod_lock_post_view.rs index e9ec5f6679de72778ba45892f4d92a7d27fe1f2a..32ec5732b662c5153a0fec921055b8f5169c36b3 100644 --- a/crates/db_views_moderator/src/mod_lock_post_view.rs +++ b/crates/db_views_moderator/src/mod_lock_post_view.rs @@ -43,7 +43,7 @@ impl ModLockPostView { query = query.filter(mod_lock_post::mod_person_id.eq(mod_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_remove_comment_view.rs b/crates/db_views_moderator/src/mod_remove_comment_view.rs index b2b14f220403bbd75c98b7cce24fae2f95f0006e..a3c7e64735c13a4a2a57440ad8407a818f960abe 100644 --- a/crates/db_views_moderator/src/mod_remove_comment_view.rs +++ b/crates/db_views_moderator/src/mod_remove_comment_view.rs @@ -55,7 +55,7 @@ impl ModRemoveCommentView { query = query.filter(mod_remove_comment::mod_person_id.eq(mod_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_remove_community_view.rs b/crates/db_views_moderator/src/mod_remove_community_view.rs index 29aad7f92d18f6c57f7342c49dbcafe0199b3a6d..91fcf511cca1eb1818f2c44176b5f3cd441a5e12 100644 --- a/crates/db_views_moderator/src/mod_remove_community_view.rs +++ b/crates/db_views_moderator/src/mod_remove_community_view.rs @@ -35,7 +35,7 @@ impl ModRemoveCommunityView { query = query.filter(mod_remove_community::mod_person_id.eq(mod_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_remove_post_view.rs b/crates/db_views_moderator/src/mod_remove_post_view.rs index 849b563912330e1d183f1ee8abdbb29a899c359f..0368a24b037ae753ec0ac8409592e1436c12e612 100644 --- a/crates/db_views_moderator/src/mod_remove_post_view.rs +++ b/crates/db_views_moderator/src/mod_remove_post_view.rs @@ -43,7 +43,7 @@ impl ModRemovePostView { query = query.filter(mod_remove_post::mod_person_id.eq(mod_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_sticky_post_view.rs b/crates/db_views_moderator/src/mod_sticky_post_view.rs index 8b2383ee5ffd1816fd7090db4f038580c48fbcdf..cd0b59abaab6cf4084b77e61d7ea5ae689ff2815 100644 --- a/crates/db_views_moderator/src/mod_sticky_post_view.rs +++ b/crates/db_views_moderator/src/mod_sticky_post_view.rs @@ -43,7 +43,7 @@ impl ModStickyPostView { query = query.filter(mod_sticky_post::mod_person_id.eq(mod_person_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/db_views_moderator/src/mod_transfer_community_view.rs b/crates/db_views_moderator/src/mod_transfer_community_view.rs index c944a9a10ba685373d2d88ab330242a40f74737d..6e0df7336092464f0b2dc6ca2d727d455faf0ecc 100644 --- a/crates/db_views_moderator/src/mod_transfer_community_view.rs +++ b/crates/db_views_moderator/src/mod_transfer_community_view.rs @@ -49,7 +49,7 @@ impl ModTransferCommunityView { query = query.filter(mod_transfer_community::community_id.eq(community_id)); }; - let (limit, offset) = limit_and_offset(page, limit); + let (limit, offset) = limit_and_offset(page, limit)?; let res = query .limit(limit) diff --git a/crates/websocket/src/chat_server.rs b/crates/websocket/src/chat_server.rs index 2337cae321baa1498456fd7e90d4e6e533c0d2de..50ce35933bee33167a85dc78935423609a136b85 100644 --- a/crates/websocket/src/chat_server.rs +++ b/crates/websocket/src/chat_server.rs @@ -479,7 +479,7 @@ impl ChatServer { UserOperationCrud::CreatePost => rate_limiter.post().check(ip), UserOperationCrud::CreateCommunity => rate_limiter.register().check(ip), UserOperationCrud::CreateComment => rate_limiter.comment().check(ip), - _ => true, + _ => rate_limiter.message().check(ip), }; let fut = (message_handler_crud)(context, msg.id, user_operation_crud, data); (passed, fut) @@ -488,7 +488,7 @@ impl ChatServer { let passed = match user_operation { UserOperation::GetCaptcha => rate_limiter.post().check(ip), UserOperation::Search => rate_limiter.search().check(ip), - _ => true, + _ => rate_limiter.message().check(ip), }; let fut = (message_handler)(context, msg.id, user_operation, data); (passed, fut)