import type { Privilege } from "@/types/models/privilege.type"; import type { GetAllPrivilegiesFormat, RawPrivilege } from "./types"; export const validatePrivilege = (privilege: RawPrivilege): Error | null => { const typeValues: typeof privilege.type[] = ["count", "day", "full"]; if (!typeValues.includes(privilege.type)) { return new Error("invalid value"); } if (isNaN(Number(privilege.price))) { return new Error("price must be a number"); } return null; }; export const defineGetAllPrivilegiesFormat = (query?: string): GetAllPrivilegiesFormat => { if (!query) { return "array"; } const formats: GetAllPrivilegiesFormat[] = ["array", "map"]; const findedFormat = formats.find((format) => query === format); if (!findedFormat) { return "array"; } return findedFormat; }; export const convertPrivilegiesToMap = (privilegies: Privilege[]) => { return privilegies.reduce>((accamulator, privilege) => { if (!accamulator[privilege.serviceKey]) { accamulator[privilege.serviceKey] = []; } accamulator[privilege.serviceKey].push(privilege); return accamulator; }, {}); };