All files / libs/payout-definition/designer/core/src/lib/common search.ts

100% Statements 35/35
100% Branches 4/4
100% Functions 1/1
100% Lines 35/35

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 361x 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,
    })),
  };
}