Move validators to seperate thread, other fixes (#253)

* Move validators to seperate thread, other fixes

* Update rust version in Dockerfile

* Fix notifs not working

* Fix pack validator not enforcing files
This commit is contained in:
Geometrically
2021-11-13 15:46:08 -07:00
committed by GitHub
parent 13187de97d
commit 7f791d4919
19 changed files with 257 additions and 196 deletions

View File

@@ -129,7 +129,7 @@ pub fn teams_config(cfg: &mut web::ServiceConfig) {
pub fn notifications_config(cfg: &mut web::ServiceConfig) {
cfg.service(notifications::notifications_get);
cfg.service(notifications::notification_delete);
cfg.service(notifications::notifications_delete);
cfg.service(
web::scope("notification")

View File

@@ -510,7 +510,7 @@ pub async fn project_create_inner(
&*project_create_data.project_type,
version_data.loaders.clone(),
version_data.game_versions.clone(),
&all_game_versions,
all_game_versions.clone(),
false,
&mut transaction,
)

View File

@@ -373,7 +373,7 @@ pub async fn project_edit(
}
}
let status_id = database::models::StatusId::get_id(&status, &mut *transaction)
let status_id = database::models::StatusId::get_id(status, &mut *transaction)
.await?
.ok_or_else(|| {
ApiError::InvalidInputError(
@@ -423,17 +423,15 @@ pub async fn project_edit(
.await?;
for category in categories {
let category_id = database::models::categories::Category::get_id(
&category,
&mut *transaction,
)
.await?
.ok_or_else(|| {
ApiError::InvalidInputError(format!(
"Category {} does not exist.",
category.clone()
))
})?;
let category_id =
database::models::categories::Category::get_id(category, &mut *transaction)
.await?
.ok_or_else(|| {
ApiError::InvalidInputError(format!(
"Category {} does not exist.",
category.clone()
))
})?;
sqlx::query!(
"

View File

@@ -218,7 +218,9 @@ pub async fn add_team_member(
let result = sqlx::query!(
"
SELECT m.title, m.id FROM mods m
SELECT m.title title, m.id id, pt.name project_type
FROM mods m
INNER JOIN project_types pt ON pt.id = m.project_type
WHERE m.team_id = $1
",
team_id as crate::database::models::ids::TeamId
@@ -234,7 +236,7 @@ pub async fn add_team_member(
"Team invite from {} to join the team for project {}",
current_user.username, result.title
),
link: format!("project/{}", ProjectId(result.id as u64)),
link: format!("/{}/{}", result.project_type, ProjectId(result.id as u64)),
actions: vec![
NotificationActionBuilder {
title: "Accept".to_string(),
@@ -361,7 +363,7 @@ pub async fn transfer_ownership(
TeamMember::edit_team_member(
id.into(),
current_user.id.into(),
None,
Some(Permissions::ALL),
Some(crate::models::teams::DEFAULT_ROLE.to_string()),
None,
&mut transaction,

View File

@@ -323,8 +323,7 @@ pub async fn user_icon_edit(
}
let bytes =
read_from_payload(&mut payload, 262144, "Icons must be smaller than 256KiB")
.await?;
read_from_payload(&mut payload, 2097152, "Icons must be smaller than 2MiB").await?;
let upload_data = file_host
.upload_file(

View File

@@ -288,7 +288,7 @@ async fn version_create_inner(
&*project_type,
version_data.loaders,
version_data.game_versions,
&all_game_versions,
all_game_versions.clone(),
false,
&mut transaction,
)
@@ -308,8 +308,10 @@ async fn version_create_inner(
let result = sqlx::query!(
"
SELECT m.title FROM mods m
WHERE id = $1
SELECT m.title title, pt.name project_type
FROM mods m
INNER JOIN project_types pt ON pt.id = m.project_type
WHERE m.id = $1
",
builder.project_id as crate::database::models::ids::ProjectId
)
@@ -344,7 +346,10 @@ async fn version_create_inner(
result.title,
version_data.version_number.clone()
),
link: format!("project/{}/version/{}", project_id, version_id),
link: format!(
"/{}/{}/version/{}",
result.project_type, project_id, version_id
),
actions: vec![],
}
.insert_many(users, &mut *transaction)
@@ -544,7 +549,7 @@ async fn upload_file_to_version_inner(
.into_iter()
.map(GameVersion)
.collect(),
&all_game_versions,
all_game_versions.clone(),
true,
&mut transaction,
)
@@ -579,7 +584,7 @@ pub async fn upload_file(
project_type: &str,
loaders: Vec<Loader>,
game_versions: Vec<GameVersion>,
all_game_versions: &[models::categories::GameVersion],
all_game_versions: Vec<models::categories::GameVersion>,
ignore_primary: bool,
transaction: &mut sqlx::Transaction<'_, sqlx::Postgres>,
) -> Result<(), CreateError> {
@@ -614,13 +619,14 @@ pub async fn upload_file(
}
let validation_result = validate_file(
&data,
file_extension,
project_type,
data.clone().into(),
file_extension.to_string(),
project_type.to_string(),
loaders,
game_versions,
all_game_versions,
)?;
)
.await?;
let upload_data = file_host
.upload_file(

View File

@@ -259,8 +259,8 @@ pub async fn version_edit(
let builders = dependencies
.iter()
.map(|x| database::models::version_item::DependencyBuilder {
project_id: x.project_id.clone().map(|x| x.into()),
version_id: x.version_id.clone().map(|x| x.into()),
project_id: x.project_id.map(|x| x.into()),
version_id: x.version_id.map(|x| x.into()),
dependency_type: x.dependency_type.to_string(),
})
.collect::<Vec<database::models::version_item::DependencyBuilder>>();