import { Injectable } from "@nestjs/common"; import { SkillDto, SkillType } from "@/skills/skills.types"; import {skills} from "@/skills/skills"; @Injectable() export class SkillsService { private readonly skills: ReadonlyArray; constructor() { this.skills = SkillDto.asDto(skills) .sort((skillA, skillB) => skillA.category > skillB.category ? 1 : -1); } getMany(filter?: Partial) { const filtersValues = Object.entries(filter ?? {}).map(([key, filterValue]) => ([key, new RegExp(filterValue, "i")])) as [keyof SkillType, RegExp][]; if (!filter || filtersValues.length === 0) { return this.skills; } return this.skills.filter((skill) => filtersValues.some(([key, filterValue]) => filterValue.test(skill[key]))); } }