Unified search algorithm across all lists; per-section record visibility (contacts, deals, activities, leads, finance, tickets, notes, projects)

This commit is contained in:
2026-10-06 15:04:46 +03:30
parent 43717392b2
commit e08f1452ef
38 changed files with 699 additions and 420 deletions
+6 -8
View File
@@ -6,6 +6,7 @@ import type {
} from '@mento/shared';
import { Prisma } from '@prisma/client';
import { PrismaService } from '../prisma/prisma.service';
import { buildSearchWhere, ci } from '../common/search';
@Injectable()
export class FaqService {
@@ -21,15 +22,12 @@ export class FaqService {
...(opts.category?.trim()
? { category: opts.category.trim() }
: {}),
...(opts.q?.trim()
? {
OR: [
{ question: { contains: opts.q.trim(), mode: 'insensitive' } },
{ answer: { contains: opts.q.trim(), mode: 'insensitive' } },
],
}
: {}),
};
const search = buildSearchWhere<Prisma.FaqArticleWhereInput>(opts.q, (t) => [
{ question: ci(t) },
{ answer: ci(t) },
]);
if (search) where.AND = [search];
const rows = await this.prisma.faqArticle.findMany({
where,
orderBy: [{ position: 'asc' }, { createdAt: 'asc' }],