search in admin also
This commit is contained in:
@@ -138,10 +138,17 @@ async fn show(
|
||||
.all(&ctx.db)
|
||||
.await?;
|
||||
|
||||
let list = products::Entity::find()
|
||||
.order_by_asc(products::Column::Name)
|
||||
.all(&ctx.db)
|
||||
.await?;
|
||||
// Optional text search (drafts included), otherwise the whole catalog by
|
||||
// name. Reuses the storefront's hybrid full-text + fuzzy product search.
|
||||
let query = params.get("q").map(String::as_str).unwrap_or("").trim().to_string();
|
||||
let list = if query.is_empty() {
|
||||
products::Entity::find()
|
||||
.order_by_asc(products::Column::Name)
|
||||
.all(&ctx.db)
|
||||
.await?
|
||||
} else {
|
||||
products::Entity::search(&ctx.db, &query, 1000, false).await?
|
||||
};
|
||||
|
||||
// Category sidebar tree (counts over the full, unfiltered product list) plus
|
||||
// the active `?category=` filter applied to the rows.
|
||||
@@ -212,6 +219,7 @@ async fn show(
|
||||
"products": rows,
|
||||
"category_groups": category_groups,
|
||||
"selected_category": selected_category,
|
||||
"query": query,
|
||||
"total_count": list.len(),
|
||||
"uncategorized_count": category_ids.iter().filter(|c| c.is_none()).count(),
|
||||
"error": params.get("error"),
|
||||
|
||||
@@ -281,10 +281,17 @@ async fn index(
|
||||
.map(|c| (c.id, c.name.clone()))
|
||||
.collect();
|
||||
|
||||
let list = products::Entity::find()
|
||||
.order_by_desc(products::Column::CreatedAt)
|
||||
.all(&ctx.db)
|
||||
.await?;
|
||||
// Optional text search (drafts included), otherwise the full catalog newest
|
||||
// first. Reuses the storefront's hybrid full-text + fuzzy product search.
|
||||
let query = params.get("q").map(String::as_str).unwrap_or("").trim().to_string();
|
||||
let list = if query.is_empty() {
|
||||
products::Entity::find()
|
||||
.order_by_desc(products::Column::CreatedAt)
|
||||
.all(&ctx.db)
|
||||
.await?
|
||||
} else {
|
||||
products::Entity::search(&ctx.db, &query, 1000, false).await?
|
||||
};
|
||||
let ids: Vec<i32> = list.iter().map(|p| p.id).collect();
|
||||
let grouped = product_variants::Entity::grouped_for_products(&ctx.db, &ids).await?;
|
||||
|
||||
@@ -352,6 +359,7 @@ async fn index(
|
||||
"audience": audience,
|
||||
"category_groups": category_groups,
|
||||
"selected_category": selected_category,
|
||||
"query": query,
|
||||
"total_count": list.len(),
|
||||
"uncategorized_count": category_ids.iter().filter(|c| c.is_none()).count(),
|
||||
"lang": current_lang(&jar),
|
||||
|
||||
@@ -102,7 +102,7 @@ async fn run_search(
|
||||
.all(&ctx.db)
|
||||
.await?
|
||||
} else {
|
||||
products::Entity::search(&ctx.db, &q_trim, SEARCH_CAP).await?
|
||||
products::Entity::search(&ctx.db, &q_trim, SEARCH_CAP, true).await?
|
||||
};
|
||||
|
||||
// 2. Attach representative variant + resolved price to each (drop products
|
||||
|
||||
Reference in New Issue
Block a user