23 lines
829 B
TypeScript
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])));
|
|
}
|
|
}
|