useSharedAPIReport() — supabase Function Reference
Architecture documentation for the useSharedAPIReport() function in SharedAPIReport.constants.ts from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD d0014f9c_78f0_5d28_6b3b_8689773a942d["useSharedAPIReport()"] 89b35970_22dc_effb_068b_3b45b822f400["fetchLogs()"] d0014f9c_78f0_5d28_6b3b_8689773a942d -->|calls| 89b35970_22dc_effb_068b_3b45b822f400 style d0014f9c_78f0_5d28_6b3b_8689773a942d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/interfaces/Reports/SharedAPIReport/SharedAPIReport.constants.ts lines 237–375
export const useSharedAPIReport = ({
filterBy,
start,
end,
enabled = true,
}: Omit<SharedAPIReportParams, 'projectRef'>) => {
const { ref } = useParams() as { ref: string }
const [filters, setFilters] = useState<ReportFilterItem[]>([])
const queryClient = useQueryClient()
const filterByMapSource = {
functions: 'function_edge_logs',
realtime: 'edge_logs',
storage: 'edge_logs',
graphql: 'edge_logs',
postgrest: 'edge_logs',
auth: 'edge_logs',
}
const filterByMapValue = {
functions: '/functions',
realtime: '/realtime',
storage: '/storage',
graphql: '/graphql',
postgrest: '/rest',
auth: '/auth',
}
const baseFilter = {
key: 'request.path',
value: filterByMapValue[filterBy],
compare: 'matches' as const,
}
const allFilters = [baseFilter, ...filters]
const queries = useQueries({
queries: Object.entries(SHARED_API_REPORT_SQL).map(([key, value]) => ({
queryKey: [
...DEFAULT_KEYS,
filterBy,
key,
filterByMapSource[filterBy],
filters,
start,
end,
ref,
],
enabled: enabled && !!ref && !!filterBy,
queryFn: () =>
fetchLogs({
projectRef: ref,
sql: value.sql(allFilters, filterByMapSource[filterBy]),
start,
end,
}),
})),
})
const keys = Object.keys(SHARED_API_REPORT_SQL) as Array<keyof typeof SHARED_API_REPORT_SQL>
const data = keys.reduce(
(acc, key, i) => {
acc[key] = queries[i].data?.result || []
return acc
},
{} as { [K in keyof typeof SHARED_API_REPORT_SQL]: unknown[] }
)
const error = keys.reduce(
(acc, key, i) => {
acc[key] = queries[i].error as unknown as string
return acc
},
{} as { [K in keyof typeof SHARED_API_REPORT_SQL]: string }
)
const isLoading = keys.reduce(
(acc, key, i) => {
acc[key] = queries[i].isLoading
return acc
},
{} as { [K in keyof typeof SHARED_API_REPORT_SQL]: boolean }
)
const addFilter = (filter: ReportFilterItem) => {
if (isEqual(filter, baseFilter)) return
if (filters.some((f) => isEqual(f, filter))) return
setFilters((prev) =>
[...prev, filter].sort((a, b) => {
const keyA = a.key.toLowerCase()
const keyB = b.key.toLowerCase()
if (keyA < keyB) {
return -1
}
if (keyA > keyB) {
return 1
}
return 0
})
)
}
const removeFilters = (toRemove: ReportFilterItem[]) => {
setFilters((prev) => prev.filter((f) => !toRemove.find((r) => isEqual(f, r))))
}
const isLoadingData = Object.values(isLoading).some(Boolean)
const SQLMap: Record<SharedAPIReportKey, string> = {
totalRequests: SHARED_API_REPORT_SQL.totalRequests.sql(allFilters, filterByMapSource[filterBy]),
topRoutes: SHARED_API_REPORT_SQL.topRoutes.sql(allFilters, filterByMapSource[filterBy]),
errorCounts: SHARED_API_REPORT_SQL.errorCounts.sql(allFilters, filterByMapSource[filterBy]),
topErrorRoutes: SHARED_API_REPORT_SQL.topErrorRoutes.sql(
allFilters,
filterByMapSource[filterBy]
),
responseSpeed: SHARED_API_REPORT_SQL.responseSpeed.sql(allFilters, filterByMapSource[filterBy]),
topSlowRoutes: SHARED_API_REPORT_SQL.topSlowRoutes.sql(allFilters, filterByMapSource[filterBy]),
networkTraffic: SHARED_API_REPORT_SQL.networkTraffic.sql(
allFilters,
filterByMapSource[filterBy]
),
}
return {
data,
error,
isLoading,
isLoadingData,
isRefetching: queryClient.isFetching({ queryKey: DEFAULT_KEYS }) > 0 || false,
refetch: () => queryClient.invalidateQueries({ queryKey: DEFAULT_KEYS }),
filters,
addFilter,
removeFilters,
/**
* The SQL queries used to fetch each metric
*/
sql: SQLMap,
}
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does useSharedAPIReport() do?
useSharedAPIReport() is a function in the supabase codebase.
What does useSharedAPIReport() call?
useSharedAPIReport() calls 1 function(s): fetchLogs.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free