import useDbQuery, { DbQueryHook } from 'hooks/analytics/useDbQuery' import useLogsQuery, { LogsQueryHook } from 'hooks/analytics/useLogsQuery' import type { BaseQueries, PresetConfig, ReportQuery } from './Reports.types' /** * Converts a query params string to an object */ export const queryParamsToObject = (params: string) => { return Object.fromEntries(new URLSearchParams(params)) } // generate hooks based on preset config export type PresetHookResult = LogsQueryHook | DbQueryHook type PresetHooks = Record PresetHookResult> export const queriesFactory = ( queries: BaseQueries, projectRef: string ): PresetHooks => { const hooks: PresetHooks = Object.entries(queries).reduce( (acc, [k, { sql, queryType }]) => { if (queryType === 'db') { return { ...acc, [k]: () => useDbQuery({ sql }), } } else { return { ...acc, [k]: () => useLogsQuery(projectRef), } } }, {} ) return hooks }