/* SPDX-FileCopyrightText: © 2025 Hornwitser SPDX-License-Identifier: AGPL-3.0-or-later */ import type { LocationQueryValue } from 'vue-router'; import type { Id } from '~/shared/types/common'; export function queryToString(item?: null | LocationQueryValue | LocationQueryValue[]) { if (item === null) return ""; if (item instanceof Array) return queryToString(item[0]) return item; } export function queryToNumber(item?: null | LocationQueryValue | LocationQueryValue[]) { if (item === null || item === undefined) return undefined; if (item instanceof Array) return queryToNumber(item[0]) return Number.parseInt(item, 10); } export function queryToBoolean(item?: null | LocationQueryValue | LocationQueryValue[]) { if (item === undefined) return false; return true; } export function idMap(entities: T[]) { return new Map(entities.map(entity => [entity.id, entity])); }