Unified search algorithm across all lists; per-section record visibility (contacts, deals, activities, leads, finance, tickets, notes, projects)
This commit is contained in:
@@ -10,6 +10,7 @@ import type {
|
||||
} from '@mento/shared';
|
||||
import { Prisma } from '@prisma/client';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { buildSearchWhere, ci } from '../common/search';
|
||||
import { InventoryService } from '../inventory/inventory.service';
|
||||
|
||||
type ProductRow = {
|
||||
@@ -56,26 +57,15 @@ export class ProductsService {
|
||||
? { category: opts.category.trim() }
|
||||
: {}),
|
||||
...(opts?.kind ? { kind: opts.kind } : {}),
|
||||
...(opts?.q?.trim()
|
||||
? {
|
||||
OR: [
|
||||
{ name: { contains: opts.q.trim(), mode: 'insensitive' } },
|
||||
{ sku: { contains: opts.q.trim(), mode: 'insensitive' } },
|
||||
{
|
||||
description: {
|
||||
contains: opts.q.trim(),
|
||||
mode: 'insensitive',
|
||||
},
|
||||
},
|
||||
{
|
||||
category: {
|
||||
contains: opts.q.trim(),
|
||||
mode: 'insensitive',
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
: {}),
|
||||
...(() => {
|
||||
const search = buildSearchWhere<Prisma.ProductWhereInput>(opts?.q, (t) => [
|
||||
{ name: ci(t) },
|
||||
{ sku: ci(t) },
|
||||
{ description: ci(t) },
|
||||
{ category: ci(t) },
|
||||
]);
|
||||
return search ? { AND: [search] } : {};
|
||||
})(),
|
||||
},
|
||||
orderBy: [{ isActive: 'desc' }, { name: 'asc' }],
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user