Unified search algorithm across all lists; per-section record visibility (contacts, deals, activities, leads, finance, tickets, notes, projects)
This commit is contained in:
@@ -17,6 +17,7 @@ import { Prisma } from '@prisma/client';
|
||||
import { randomUUID } from 'node:crypto';
|
||||
import * as path from 'path';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { buildSearchWhere, ci } from '../common/search';
|
||||
import { LocalFileStorage } from '../storage/local-file.storage';
|
||||
import {
|
||||
type Actor,
|
||||
@@ -131,15 +132,11 @@ export class NotesService {
|
||||
const page = opts.page ?? 1;
|
||||
const limit = opts.limit ?? 50;
|
||||
const access = noteAccessWhere(actor);
|
||||
const search = opts.q?.trim()
|
||||
? {
|
||||
OR: [
|
||||
{ title: { contains: opts.q.trim(), mode: 'insensitive' as const } },
|
||||
{ body: { contains: opts.q.trim(), mode: 'insensitive' as const } },
|
||||
{ tags: { has: opts.q.trim() } },
|
||||
],
|
||||
}
|
||||
: null;
|
||||
const search = buildSearchWhere<Prisma.NoteWhereInput>(opts.q, (t) => [
|
||||
{ title: ci(t) },
|
||||
{ body: ci(t) },
|
||||
{ tags: { has: t } },
|
||||
]);
|
||||
|
||||
const where: Prisma.NoteWhereInput = {
|
||||
organizationId,
|
||||
|
||||
Reference in New Issue
Block a user