CV/src/skills/skills.service.ts

23 lines
829 B
TypeScript

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<SkillDto>;
constructor() {
this.skills = SkillDto.asDto(skills)
.sort((skillA, skillB) => skillA.category > skillB.category ? 1 : -1);
}
getMany(filter?: Partial<SkillType>) {
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])));
}
}