Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 1x 1x 1x 1x 18x 18x 18x 18x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 14x 18x 4x 4x 4x 4x 4x 4x 4x 18x 18x 18x 164x 164x 18x 18x 18x | import { Equal, Like, type FindManyOptions } from 'typeorm';
import { type Company } from '@amalia/core/models';
export function search(company: Company, expression: 'condition' | 'formula', searchKey: string): FindManyOptions {
const searchTerms =
expression === 'formula'
? [
{ formula: Like(`% ${searchKey} %`) },
{ formula: Like(`${searchKey} %`) },
{ formula: Like(`% ${searchKey}`) },
{ formula: Like(`%${searchKey},%`) },
{ formula: Like(`%${searchKey}"%`) },
{ formula: Like(`%(${searchKey},%`) },
{ formula: Like(`%(${searchKey} %`) },
{ formula: Like(`%${searchKey})%`) },
{ formula: Like(`%${searchKey}.%`) },
{ formula: Equal(searchKey) },
]
: [
{ condition: Like(`% ${searchKey} %`) },
{ condition: Like(`${searchKey} %`) },
{ condition: Like(`% ${searchKey}`) },
{ condition: Like(`%${searchKey},%`) },
{ condition: Like(`%${searchKey}"%`) },
{ condition: Equal(searchKey) },
];
return {
where: searchTerms.map((searchTerm) => ({
company: { id: company.id },
...searchTerm,
})),
};
}
|