You've already forked AstralRinth
forked from didirus/AstralRinth
Run fmt, fix dep route (#312)
This commit is contained in:
@@ -7,7 +7,9 @@ use crate::search::UploadSearchProject;
|
||||
use sqlx::postgres::PgPool;
|
||||
|
||||
// TODO: Move this away from STRING_AGG to multiple queries - however this may be more efficient?
|
||||
pub async fn index_local(pool: PgPool) -> Result<Vec<UploadSearchProject>, IndexingError> {
|
||||
pub async fn index_local(
|
||||
pool: PgPool,
|
||||
) -> Result<Vec<UploadSearchProject>, IndexingError> {
|
||||
info!("Indexing local projects!");
|
||||
Ok(
|
||||
sqlx::query!(
|
||||
|
||||
@@ -88,15 +88,25 @@ async fn update_index_helper<'a>(
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn reconfigure_indices(config: &SearchConfig) -> Result<(), IndexingError> {
|
||||
pub async fn reconfigure_indices(
|
||||
config: &SearchConfig,
|
||||
) -> Result<(), IndexingError> {
|
||||
let client = config.make_client();
|
||||
|
||||
// Relevance Index
|
||||
update_index_helper(&client, "relevance_projects", "desc(downloads)").await?;
|
||||
update_index_helper(&client, "downloads_projects", "desc(downloads)").await?;
|
||||
update_index_helper(&client, "relevance_projects", "desc(downloads)")
|
||||
.await?;
|
||||
update_index_helper(&client, "downloads_projects", "desc(downloads)")
|
||||
.await?;
|
||||
update_index_helper(&client, "follows_projects", "desc(follows)").await?;
|
||||
update_index_helper(&client, "updated_projects", "desc(modified_timestamp)").await?;
|
||||
update_index_helper(&client, "newest_projects", "desc(created_timestamp)").await?;
|
||||
update_index_helper(
|
||||
&client,
|
||||
"updated_projects",
|
||||
"desc(modified_timestamp)",
|
||||
)
|
||||
.await?;
|
||||
update_index_helper(&client, "newest_projects", "desc(created_timestamp)")
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -150,7 +160,10 @@ async fn create_index<'a>(
|
||||
}
|
||||
}
|
||||
|
||||
async fn add_to_index(index: Index<'_>, mods: &[UploadSearchProject]) -> Result<(), IndexingError> {
|
||||
async fn add_to_index(
|
||||
index: Index<'_>,
|
||||
mods: &[UploadSearchProject],
|
||||
) -> Result<(), IndexingError> {
|
||||
for chunk in mods.chunks(MEILISEARCH_CHUNK_SIZE) {
|
||||
index.add_documents(chunk, Some("project_id")).await?;
|
||||
}
|
||||
@@ -179,9 +192,27 @@ pub async fn add_projects(
|
||||
) -> Result<(), IndexingError> {
|
||||
let client = config.make_client();
|
||||
|
||||
create_and_add_to_index(&client, &projects, "relevance_projects", "desc(downloads)").await?;
|
||||
create_and_add_to_index(&client, &projects, "downloads_projects", "desc(downloads)").await?;
|
||||
create_and_add_to_index(&client, &projects, "follows_projects", "desc(follows)").await?;
|
||||
create_and_add_to_index(
|
||||
&client,
|
||||
&projects,
|
||||
"relevance_projects",
|
||||
"desc(downloads)",
|
||||
)
|
||||
.await?;
|
||||
create_and_add_to_index(
|
||||
&client,
|
||||
&projects,
|
||||
"downloads_projects",
|
||||
"desc(downloads)",
|
||||
)
|
||||
.await?;
|
||||
create_and_add_to_index(
|
||||
&client,
|
||||
&projects,
|
||||
"follows_projects",
|
||||
"desc(follows)",
|
||||
)
|
||||
.await?;
|
||||
create_and_add_to_index(
|
||||
&client,
|
||||
&projects,
|
||||
|
||||
@@ -21,9 +21,15 @@ impl CreationQueue {
|
||||
self.queue.lock().unwrap().push(search_project);
|
||||
}
|
||||
pub fn take(&self) -> Vec<UploadSearchProject> {
|
||||
std::mem::replace(&mut *self.queue.lock().unwrap(), Vec::with_capacity(10))
|
||||
std::mem::replace(
|
||||
&mut *self.queue.lock().unwrap(),
|
||||
Vec::with_capacity(10),
|
||||
)
|
||||
}
|
||||
pub async fn index(&self, config: &SearchConfig) -> Result<(), IndexingError> {
|
||||
pub async fn index(
|
||||
&self,
|
||||
config: &SearchConfig,
|
||||
) -> Result<(), IndexingError> {
|
||||
let queue = self.take();
|
||||
add_projects(queue, config).await
|
||||
}
|
||||
|
||||
@@ -149,12 +149,13 @@ pub async fn search_for_project(
|
||||
) -> Result<SearchResults, SearchError> {
|
||||
let client = Client::new(&*config.address, &*config.key);
|
||||
|
||||
let filters: Cow<_> = match (info.filters.as_deref(), info.version.as_deref()) {
|
||||
(Some(f), Some(v)) => format!("({}) AND ({})", f, v).into(),
|
||||
(Some(f), None) => f.into(),
|
||||
(None, Some(v)) => v.into(),
|
||||
(None, None) => "".into(),
|
||||
};
|
||||
let filters: Cow<_> =
|
||||
match (info.filters.as_deref(), info.version.as_deref()) {
|
||||
(Some(f), Some(v)) => format!("({}) AND ({})", f, v).into(),
|
||||
(Some(f), None) => f.into(),
|
||||
(None, Some(v)) => v.into(),
|
||||
(None, None) => "".into(),
|
||||
};
|
||||
|
||||
let offset = info.offset.as_deref().unwrap_or("0").parse()?;
|
||||
let index = info.index.as_deref().unwrap_or("relevance");
|
||||
|
||||
Reference in New Issue
Block a user