Add loaders + game versions param to mods (#528)

This commit is contained in:
Geometrically
2023-01-27 19:24:40 -07:00
committed by GitHub
parent df3aeed291
commit 26533c47e7
14 changed files with 1114 additions and 880 deletions

View File

@@ -816,6 +816,8 @@ pub async fn project_create_inner(
followers: 0,
categories: project_create_data.categories,
additional_categories: project_create_data.additional_categories,
game_versions: vec![],
loaders: vec![],
versions: project_builder
.initial_versions
.iter()

View File

@@ -38,6 +38,9 @@ pub async fn forge_updates(
project.id,
None,
Some(vec!["forge".to_string()]),
None,
None,
None,
&**pool,
)
.await?;

View File

@@ -107,7 +107,7 @@ pub async fn projects_list(
crate::database::Project::get_many_full(&project_data, &**pool)
.await?
.into_iter()
.filter(|x| can_view_private || x.inner.status.is_approved())
.filter(|x| can_view_private || x.inner.status.is_searchable())
.map(Project::from)
.collect();

View File

@@ -76,6 +76,9 @@ pub async fn version_list(
.loaders
.as_ref()
.map(|x| serde_json::from_str(x).unwrap_or_default()),
filters.version_type,
filters.limit,
filters.offset,
&**pool,
)
.await?;

View File

@@ -422,6 +422,14 @@ async fn version_create_inner(
.insert_many(users, &mut *transaction)
.await?;
models::Project::update_game_versions(
builder.project_id,
&mut *transaction,
)
.await?;
models::Project::update_loaders(builder.project_id, &mut *transaction)
.await?;
let response = Version {
id: builder.version_id.into(),
project_id: builder.project_id.into(),

View File

@@ -301,6 +301,9 @@ pub async fn get_update_from_hash(
.map(|x| x.0)
.collect(),
),
None,
None,
None,
&**pool,
)
.await?;
@@ -493,6 +496,9 @@ pub async fn update_files(
.map(|x| x.0.clone())
.collect(),
),
None,
None,
None,
&**pool,
)
.await?;

View File

@@ -1,7 +1,9 @@
use super::ApiError;
use crate::database;
use crate::models;
use crate::models::projects::{Dependency, FileType, Version, VersionStatus};
use crate::models::projects::{
Dependency, FileType, Version, VersionStatus, VersionType,
};
use crate::models::teams::Permissions;
use crate::util::auth::{
get_user_from_headers, is_authorized, is_authorized_version,
@@ -19,6 +21,9 @@ pub struct VersionListFilters {
pub game_versions: Option<String>,
pub loaders: Option<String>,
pub featured: Option<bool>,
pub version_type: Option<VersionType>,
pub limit: Option<u32>,
pub offset: Option<u32>,
}
#[get("version")]
@@ -54,6 +59,9 @@ pub async fn version_list(
.loaders
.as_ref()
.map(|x| serde_json::from_str(x).unwrap_or_default()),
filters.version_type,
filters.limit,
filters.offset,
&**pool,
)
.await?;
@@ -393,6 +401,12 @@ pub async fn version_edit(
.execute(&mut *transaction)
.await?;
}
database::models::Project::update_game_versions(
version_item.inner.project_id,
&mut transaction,
)
.await?;
}
if let Some(loaders) = &new_version.loaders {
@@ -430,6 +444,12 @@ pub async fn version_edit(
.execute(&mut *transaction)
.await?;
}
database::models::Project::update_loaders(
version_item.inner.project_id,
&mut transaction,
)
.await?;
}
if let Some(featured) = &new_version.featured {