From 647786e3966c2c3e6f2a230a04f56d6bb158584f Mon Sep 17 00:00:00 2001 From: Wyatt Verchere Date: Wed, 15 Nov 2023 10:25:22 -0800 Subject: [PATCH] fmt; clippy; prepare --- ...d602f5ff06c9e1a9e40b2ef8016011943502.json} | 7 +- ...28d2cbb26cfbb0ec94ecc8f0741f48178ec1c.json | 1 - ...cd7e38197123e2af364dd7d3b01c322345d7b.json | 36 --------- src/routes/v2/version_creation.rs | 2 +- src/routes/v3/organizations.rs | 17 ++--- src/routes/v3/project_creation.rs | 2 +- src/routes/v3/projects.rs | 4 +- src/routes/v3/users.rs | 76 +++++++++---------- src/routes/v3/version_creation.rs | 6 +- tests/common/api_v3/mod.rs | 2 +- tests/common/api_v3/user.rs | 2 +- tests/common/request_data.rs | 3 +- tests/feed.rs | 5 +- tests/organizations.rs | 5 +- 14 files changed, 61 insertions(+), 107 deletions(-) rename .sqlx/{query-fefb4f07a0f0c0cf74e554d120f8707d698fc8b4dbb66d2830f4ec0229bc1019.json => query-26bf18543c97850a1387221a8d15d602f5ff06c9e1a9e40b2ef8016011943502.json} (65%) delete mode 100644 .sqlx/query-b36877d60945eaae76680770a5d28d2cbb26cfbb0ec94ecc8f0741f48178ec1c.json delete mode 100644 .sqlx/query-fbfa35f79abe9662cfbad62db8ecd7e38197123e2af364dd7d3b01c322345d7b.json diff --git a/.sqlx/query-fefb4f07a0f0c0cf74e554d120f8707d698fc8b4dbb66d2830f4ec0229bc1019.json b/.sqlx/query-26bf18543c97850a1387221a8d15d602f5ff06c9e1a9e40b2ef8016011943502.json similarity index 65% rename from .sqlx/query-fefb4f07a0f0c0cf74e554d120f8707d698fc8b4dbb66d2830f4ec0229bc1019.json rename to .sqlx/query-26bf18543c97850a1387221a8d15d602f5ff06c9e1a9e40b2ef8016011943502.json index e2b9c106..e00c8502 100644 --- a/.sqlx/query-fefb4f07a0f0c0cf74e554d120f8707d698fc8b4dbb66d2830f4ec0229bc1019.json +++ b/.sqlx/query-26bf18543c97850a1387221a8d15d602f5ff06c9e1a9e40b2ef8016011943502.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n INSERT INTO mods (\n id, team_id, title, description, body,\n published, downloads, icon_url, issues_url,\n source_url, wiki_url, status, requested_status, discord_url,\n license_url, license,\n slug, color, monetization_status\n )\n VALUES (\n $1, $2, $3, $4, $5,\n $6, $7, $8, $9,\n $10, $11, $12, $13, $14,\n $15, $16, \n LOWER($17), $18, $19\n )\n ", + "query": "\n INSERT INTO mods (\n id, team_id, title, description, body,\n published, downloads, icon_url, issues_url,\n source_url, wiki_url, status, requested_status, discord_url,\n license_url, license,\n slug, color, monetization_status,\n organization_id\n )\n VALUES (\n $1, $2, $3, $4, $5,\n $6, $7, $8, $9,\n $10, $11, $12, $13, $14,\n $15, $16, \n LOWER($17), $18, $19,\n $20\n )\n ", "describe": { "columns": [], "parameters": { @@ -23,10 +23,11 @@ "Varchar", "Text", "Int4", - "Varchar" + "Varchar", + "Int8" ] }, "nullable": [] }, - "hash": "fefb4f07a0f0c0cf74e554d120f8707d698fc8b4dbb66d2830f4ec0229bc1019" + "hash": "26bf18543c97850a1387221a8d15d602f5ff06c9e1a9e40b2ef8016011943502" } diff --git a/.sqlx/query-b36877d60945eaae76680770a5d28d2cbb26cfbb0ec94ecc8f0741f48178ec1c.json b/.sqlx/query-b36877d60945eaae76680770a5d28d2cbb26cfbb0ec94ecc8f0741f48178ec1c.json deleted file mode 100644 index 8b137891..00000000 --- a/.sqlx/query-b36877d60945eaae76680770a5d28d2cbb26cfbb0ec94ecc8f0741f48178ec1c.json +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.sqlx/query-fbfa35f79abe9662cfbad62db8ecd7e38197123e2af364dd7d3b01c322345d7b.json b/.sqlx/query-fbfa35f79abe9662cfbad62db8ecd7e38197123e2af364dd7d3b01c322345d7b.json deleted file mode 100644 index a598df51..00000000 --- a/.sqlx/query-fbfa35f79abe9662cfbad62db8ecd7e38197123e2af364dd7d3b01c322345d7b.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n INSERT INTO mods (\n id, team_id, title, description, body,\n published, downloads, icon_url, issues_url,\n source_url, wiki_url, status, requested_status, discord_url,\n client_side, server_side, license_url, license,\n slug, project_type, color, monetization_status,\n organization_id\n )\n VALUES (\n $1, $2, $3, $4, $5,\n $6, $7, $8, $9,\n $10, $11, $12, $13, $14,\n $15, $16, $17, $18,\n LOWER($19), $20, $21, $22,\n $23\n )\n ", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int8", - "Int8", - "Varchar", - "Varchar", - "Varchar", - "Timestamptz", - "Int4", - "Varchar", - "Varchar", - "Varchar", - "Varchar", - "Varchar", - "Varchar", - "Varchar", - "Int4", - "Int4", - "Varchar", - "Varchar", - "Text", - "Int4", - "Int4", - "Varchar", - "Int8" - ] - }, - "nullable": [] - }, - "hash": "fbfa35f79abe9662cfbad62db8ecd7e38197123e2af364dd7d3b01c322345d7b" -} diff --git a/src/routes/v2/version_creation.rs b/src/routes/v2/version_creation.rs index ebc1180a..5652e829 100644 --- a/src/routes/v2/version_creation.rs +++ b/src/routes/v2/version_creation.rs @@ -168,4 +168,4 @@ pub async fn upload_file_to_version( ) .await?; Ok(response) -} \ No newline at end of file +} diff --git a/src/routes/v3/organizations.rs b/src/routes/v3/organizations.rs index 4ab72687..552fc118 100644 --- a/src/routes/v3/organizations.rs +++ b/src/routes/v3/organizations.rs @@ -4,6 +4,7 @@ use std::sync::Arc; use super::ApiError; use crate::auth::{filter_authorized_projects, get_user_from_headers}; use crate::database::models::team_item::TeamMember; +use crate::database::models::DatabaseError; use crate::database::models::{generate_organization_id, team_item, Organization}; use crate::database::redis::RedisPool; use crate::file_hosting::FileHost; @@ -17,14 +18,12 @@ use crate::util::routes::read_from_payload; use crate::util::validate::validation_errors_to_string; use crate::{database, models}; use actix_web::{web, HttpRequest, HttpResponse}; +use database::models::creator_follows::OrganizationFollow as DBOrganizationFollow; +use database::models::organization_item::Organization as DBOrganization; use rust_decimal::Decimal; use serde::{Deserialize, Serialize}; use sqlx::PgPool; use validator::Validate; -use crate::database::models::DatabaseError; -use database::models::creator_follows::OrganizationFollow as DBOrganizationFollow; -use database::models::organization_item::Organization as DBOrganization; - pub fn config(cfg: &mut web::ServiceConfig) { cfg.service( @@ -44,14 +43,8 @@ pub fn config(cfg: &mut web::ServiceConfig) { "{id}/members", web::get().to(super::teams::team_members_get_organization), ) - .route( - "{id}/follow", - web::post().to(organization_follow), - ) - .route( - "{id}/follow", - web::delete().to(organization_unfollow), - ), + .route("{id}/follow", web::post().to(organization_follow)) + .route("{id}/follow", web::delete().to(organization_unfollow)), ); } diff --git a/src/routes/v3/project_creation.rs b/src/routes/v3/project_creation.rs index 7f115383..f8b9ae14 100644 --- a/src/routes/v3/project_creation.rs +++ b/src/routes/v3/project_creation.rs @@ -14,7 +14,7 @@ use crate::models::pats::Scopes; use crate::models::projects::{ DonationLink, License, MonetizationStatus, ProjectId, ProjectStatus, VersionId, VersionStatus, }; -use crate::models::teams::{ProjectPermissions, OrganizationPermissions}; +use crate::models::teams::{OrganizationPermissions, ProjectPermissions}; use crate::models::threads::ThreadType; use crate::models::users::UserId; use crate::queue::session::AuthQueue; diff --git a/src/routes/v3/projects.rs b/src/routes/v3/projects.rs index a4c5112c..228dee8a 100644 --- a/src/routes/v3/projects.rs +++ b/src/routes/v3/projects.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::auth::{filter_authorized_projects, get_user_from_headers, is_authorized}; -use crate::database::models::event_item::{EventData, CreatorId}; +use crate::database::models::event_item::{CreatorId, EventData}; use crate::database::models::notification_item::NotificationBuilder; use crate::database::models::project_item::{GalleryItem, ModCategory}; use crate::database::models::thread_item::ThreadMessageBuilder; @@ -27,7 +27,7 @@ use crate::util::routes::read_from_payload; use crate::util::validate::validation_errors_to_string; use actix_web::{web, HttpRequest, HttpResponse}; use chrono::{DateTime, Utc}; -use db_ids::{UserId, OrganizationId}; +use db_ids::{OrganizationId, UserId}; use futures::TryStreamExt; use meilisearch_sdk::indexes::IndexesResults; use serde::{Deserialize, Serialize}; diff --git a/src/routes/v3/users.rs b/src/routes/v3/users.rs index b3c01f5b..79f8e567 100644 --- a/src/routes/v3/users.rs +++ b/src/routes/v3/users.rs @@ -23,21 +23,21 @@ use crate::{ database::{models::User, redis::RedisPool}, file_hosting::FileHost, models::{ - feeds::{FeedItem, FeedItemBody}, - ids::{ProjectId, VersionId}, - projects::Version, collections::{Collection, CollectionStatus}, + feeds::{FeedItem, FeedItemBody}, ids::UserId, + ids::{ProjectId, VersionId}, notifications::Notification, pats::Scopes, projects::Project, + projects::Version, users::{Badges, Payout, PayoutStatus, RecipientStatus, Role, UserPayoutData}, }, queue::{payouts::PayoutsQueue, session::AuthQueue}, util::{routes::read_from_payload, validate::validation_errors_to_string}, }; -use std::iter::FromIterator; use itertools::Itertools; +use std::iter::FromIterator; use database::models as db_models; use database::models::creator_follows::OrganizationFollow as DBOrganizationFollow; @@ -67,7 +67,7 @@ pub fn config(cfg: &mut web::ServiceConfig) { .route("{id}/payouts_fees", web::get().to(user_payouts_fees)) .route("{id}/payouts", web::post().to(user_payouts_request)) .route("{id}/follow", web::post().to(user_follow)) - .route("{id}/follow", web::delete().to(user_unfollow)) + .route("{id}/follow", web::delete().to(user_unfollow)), ); } @@ -1036,10 +1036,7 @@ pub async fn current_user_feed( // - Projects created by organizations you follow // - Versions created by users you follow // - Versions created by organizations you follow - let event_types = [ - EventType::ProjectPublished, - EventType::VersionCreated, - ]; + let event_types = [EventType::ProjectPublished, EventType::VersionCreated]; let selectors = followed_users .into_iter() .flat_map(|follow| { @@ -1081,39 +1078,38 @@ pub async fn current_user_feed( println!("authorized projects"); for event in events { - let body = - match event.event_data { - EventData::ProjectPublished { - project_id, - creator_id, - } => authorized_projects.get(&project_id.into()).map(|p| { - FeedItemBody::ProjectPublished { - project_id: project_id.into(), + let body = match event.event_data { + EventData::ProjectPublished { + project_id, + creator_id, + } => authorized_projects.get(&project_id.into()).map(|p| { + FeedItemBody::ProjectPublished { + project_id: project_id.into(), + creator_id: creator_id.into(), + project_title: p.title.clone(), + } + }), + EventData::VersionCreated { + version_id, + creator_id, + } => { + let authorized_version = authorized_versions.get(&version_id.into()); + let authorized_project = + authorized_version.and_then(|v| authorized_projects.get(&v.project_id)); + if let (Some(authorized_version), Some(authorized_project)) = + (authorized_version, authorized_project) + { + Some(FeedItemBody::VersionCreated { + project_id: authorized_project.id, + version_id: authorized_version.id, creator_id: creator_id.into(), - project_title: p.title.clone(), - } - }), - EventData::VersionCreated { - version_id, - creator_id, - } => { - let authorized_version = authorized_versions.get(&version_id.into()); - let authorized_project = - authorized_version.and_then(|v| authorized_projects.get(&v.project_id)); - if let (Some(authorized_version), Some(authorized_project)) = - (authorized_version, authorized_project) - { - Some(FeedItemBody::VersionCreated { - project_id: authorized_project.id, - version_id: authorized_version.id, - creator_id: creator_id.into(), - project_title: authorized_project.title.clone(), - }) - } else { - None - } + project_title: authorized_project.title.clone(), + }) + } else { + None } - }; + } + }; if let Some(body) = body { let feed_item = FeedItem { diff --git a/src/routes/v3/version_creation.rs b/src/routes/v3/version_creation.rs index 816d3304..94a650f6 100644 --- a/src/routes/v3/version_creation.rs +++ b/src/routes/v3/version_creation.rs @@ -1,12 +1,12 @@ use super::project_creation::{CreateError, UploadedFile}; use crate::auth::get_user_from_headers; -use crate::database::models::event_item::{EventData, CreatorId}; +use crate::database::models::event_item::{CreatorId, EventData}; use crate::database::models::loader_fields::{LoaderField, LoaderFieldEnumValue, VersionField}; use crate::database::models::notification_item::NotificationBuilder; use crate::database::models::version_item::{ DependencyBuilder, VersionBuilder, VersionFileBuilder, }; -use crate::database::models::{self, image_item, Organization, Event}; +use crate::database::models::{self, image_item, Event, Organization}; use crate::database::redis::RedisPool; use crate::file_hosting::FileHost; use crate::models::images::{Image, ImageContext, ImageId}; @@ -320,7 +320,7 @@ async fn version_create_inner( transaction, ) .await?; - + version_builder = Some(VersionBuilder { version_id: version_id.into(), project_id, diff --git a/tests/common/api_v3/mod.rs b/tests/common/api_v3/mod.rs index b5e88f9b..26ad8888 100644 --- a/tests/common/api_v3/mod.rs +++ b/tests/common/api_v3/mod.rs @@ -7,8 +7,8 @@ use std::rc::Rc; pub mod oauth; pub mod oauth_clients; pub mod organization; -pub mod user; pub mod tags; +pub mod user; #[derive(Clone)] pub struct ApiV3 { diff --git a/tests/common/api_v3/user.rs b/tests/common/api_v3/user.rs index 6ca446ce..e5a4f9ef 100644 --- a/tests/common/api_v3/user.rs +++ b/tests/common/api_v3/user.rs @@ -1,10 +1,10 @@ +use crate::common::asserts::assert_status; use actix_http::StatusCode; use actix_web::{ dev::ServiceResponse, test::{self, TestRequest}, }; use labrinth::{models::feeds::FeedItem, util::actix::TestRequestExtensions}; -use crate::common::asserts::assert_status; use super::ApiV3; diff --git a/tests/common/request_data.rs b/tests/common/request_data.rs index d5ee6c2c..bbdb1fdb 100644 --- a/tests/common/request_data.rs +++ b/tests/common/request_data.rs @@ -30,7 +30,8 @@ pub fn get_public_project_creation_data( version_jar: Option, organization_id: Option<&str>, ) -> ProjectCreationRequestData { - let json_data = get_public_project_creation_data_json(slug, version_jar.as_ref(), organization_id); + let json_data = + get_public_project_creation_data_json(slug, version_jar.as_ref(), organization_id); let multipart_data = get_public_creation_data_multipart(&json_data, version_jar.as_ref()); ProjectCreationRequestData { slug: slug.to_string(), diff --git a/tests/feed.rs b/tests/feed.rs index 09efe51c..46324c43 100644 --- a/tests/feed.rs +++ b/tests/feed.rs @@ -1,8 +1,5 @@ use crate::common::{ - asserts::{ - assert_feed_contains_project_created, - assert_feed_contains_version_created, - }, + asserts::{assert_feed_contains_project_created, assert_feed_contains_version_created}, dummy_data::DummyProjectAlpha, }; use assert_matches::assert_matches; diff --git a/tests/organizations.rs b/tests/organizations.rs index 32bedd9d..da29b65f 100644 --- a/tests/organizations.rs +++ b/tests/organizations.rs @@ -11,7 +11,10 @@ use common::{ permissions::{PermissionsTest, PermissionsTestContext}, request_data::get_public_project_creation_data, }; -use labrinth::{models::teams::{OrganizationPermissions, ProjectPermissions}, util::actix::AppendsMultipart}; +use labrinth::{ + models::teams::{OrganizationPermissions, ProjectPermissions}, + util::actix::AppendsMultipart, +}; use serde_json::json; mod common;