You've already forked AstralRinth
forked from didirus/AstralRinth
Search overhaul (#771)
* started work; switching context * working! * fmt clippy prepare * fixes * fixes * revs * merge fixes * changed comments * merge issues
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
use crate::database::models::project_item::{GalleryItem, LinkUrl};
|
||||
use crate::models::error::ApiError;
|
||||
use crate::models::projects::SearchRequest;
|
||||
use crate::models::projects::{MonetizationStatus, ProjectStatus, SearchRequest};
|
||||
use actix_web::http::StatusCode;
|
||||
use actix_web::HttpResponse;
|
||||
use chrono::{DateTime, Utc};
|
||||
@@ -80,12 +81,12 @@ pub struct UploadSearchProject {
|
||||
pub slug: Option<String>,
|
||||
pub author: String,
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
pub summary: String,
|
||||
pub categories: Vec<String>,
|
||||
pub display_categories: Vec<String>,
|
||||
pub follows: i32,
|
||||
pub downloads: i32,
|
||||
pub icon_url: String,
|
||||
pub icon_url: Option<String>,
|
||||
pub license: String,
|
||||
pub gallery: Vec<String>,
|
||||
pub featured_gallery: Option<String>,
|
||||
@@ -100,8 +101,24 @@ pub struct UploadSearchProject {
|
||||
pub open_source: bool,
|
||||
pub color: Option<u32>,
|
||||
|
||||
// Hidden fields to get the Project model out of the search results.
|
||||
pub license_url: Option<String>,
|
||||
pub monetization_status: Option<MonetizationStatus>,
|
||||
pub team_id: String,
|
||||
pub thread_id: String,
|
||||
pub versions: Vec<String>,
|
||||
pub date_published: DateTime<Utc>,
|
||||
pub date_queued: Option<DateTime<Utc>>,
|
||||
pub status: ProjectStatus,
|
||||
pub requested_status: Option<ProjectStatus>,
|
||||
pub loaders: Vec<String>, // Search uses loaders as categories- this is purely for the Project model.
|
||||
pub links: Vec<LinkUrl>,
|
||||
pub gallery_items: Vec<GalleryItem>, // Gallery *only* urls are stored in gallery, but the gallery items are stored here- required for the Project model.
|
||||
pub games: Vec<String>, // Todo: in future, could be a searchable field.
|
||||
pub organization_id: Option<String>, // Todo: in future, could be a searchable field.
|
||||
|
||||
#[serde(flatten)]
|
||||
pub loader_fields: HashMap<String, Vec<String>>,
|
||||
pub loader_fields: HashMap<String, Vec<serde_json::Value>>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
@@ -120,12 +137,12 @@ pub struct ResultSearchProject {
|
||||
pub slug: Option<String>,
|
||||
pub author: String,
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
pub summary: String,
|
||||
pub categories: Vec<String>,
|
||||
pub display_categories: Vec<String>,
|
||||
pub downloads: i32,
|
||||
pub follows: i32,
|
||||
pub icon_url: String,
|
||||
pub icon_url: Option<String>,
|
||||
/// RFC 3339 formatted creation date of the project
|
||||
pub date_created: String,
|
||||
/// RFC 3339 formatted modification date of the project
|
||||
@@ -135,8 +152,24 @@ pub struct ResultSearchProject {
|
||||
pub featured_gallery: Option<String>,
|
||||
pub color: Option<u32>,
|
||||
|
||||
// Hidden fields to get the Project model out of the search results.
|
||||
pub license_url: Option<String>,
|
||||
pub monetization_status: Option<String>,
|
||||
pub team_id: String,
|
||||
pub thread_id: String,
|
||||
pub versions: Vec<String>,
|
||||
pub date_published: String,
|
||||
pub date_queued: Option<String>,
|
||||
pub status: String,
|
||||
pub requested_status: Option<String>,
|
||||
pub loaders: Vec<String>, // Search uses loaders as categories- this is purely for the Project model.
|
||||
pub links: Vec<LinkUrl>,
|
||||
pub games: Vec<String>, // Todo: in future, could be a searchable field.
|
||||
pub gallery_items: Vec<GalleryItem>, // Gallery *only* urls are stored in gallery, but the gallery items are stored here- required for the Project model.
|
||||
pub organization_id: Option<String>, // Todo: in future, could be a searchable field.
|
||||
|
||||
#[serde(flatten)]
|
||||
pub loader_fields: HashMap<String, Vec<String>>,
|
||||
pub loader_fields: HashMap<String, Vec<serde_json::Value>>,
|
||||
}
|
||||
|
||||
pub fn get_sort_index(index: &str) -> Result<(&str, [&str; 1]), SearchError> {
|
||||
|
||||
Reference in New Issue
Block a user