ObservabilityMenu.utils.tsx126 lines · main
1import { IS_PLATFORM } from '@/lib/constants'
2
3interface ObservabilityMenuItem {
4 name: string
5 key: string
6 url: string
7}
8
9export interface ObservabilityMenuSection {
10 title: string
11 key: string
12 items: ObservabilityMenuItem[]
13}
14
15interface GenerateObservabilityMenuOptions {
16 ref: string | undefined
17 preservedQueryParams: string
18 showOverview: boolean
19 isSupamonitorEnabled: boolean
20 storageSupported: boolean
21 isPlatform?: boolean
22}
23
24export function generateObservabilityMenuItems(
25 options: GenerateObservabilityMenuOptions
26): ObservabilityMenuSection[] {
27 const {
28 ref,
29 preservedQueryParams,
30 showOverview,
31 isSupamonitorEnabled,
32 storageSupported,
33 isPlatform = IS_PLATFORM,
34 } = options
35
36 const generalItems: ObservabilityMenuItem[] = [
37 ...(showOverview
38 ? [
39 {
40 name: 'Overview',
41 key: 'observability',
42 url: `/project/${ref}/observability${preservedQueryParams}`,
43 },
44 ]
45 : []),
46 ...(isSupamonitorEnabled
47 ? [
48 {
49 name: 'Query Insights',
50 key: 'query-insights',
51 url: `/project/${ref}/observability/query-insights${preservedQueryParams}`,
52 },
53 ]
54 : [
55 {
56 name: 'Query Performance',
57 key: 'query-performance',
58 url: `/project/${ref}/observability/query-performance${preservedQueryParams}`,
59 },
60 ]),
61 ...(isPlatform
62 ? [
63 {
64 name: 'API Gateway',
65 key: 'api-overview',
66 url: `/project/${ref}/observability/api-overview${preservedQueryParams}`,
67 },
68 ]
69 : []),
70 ]
71
72 const productItems: ObservabilityMenuItem[] = [
73 {
74 name: 'Database',
75 key: 'database',
76 url: `/project/${ref}/observability/database${preservedQueryParams}`,
77 },
78 {
79 name: 'Data API',
80 key: 'postgrest',
81 url: `/project/${ref}/observability/postgrest${preservedQueryParams}`,
82 },
83 {
84 name: 'Auth',
85 key: 'auth',
86 url: `/project/${ref}/observability/auth${preservedQueryParams}`,
87 },
88 {
89 name: 'Edge Functions',
90 key: 'edge-functions',
91 url: `/project/${ref}/observability/edge-functions${preservedQueryParams}`,
92 },
93 ...(storageSupported
94 ? [
95 {
96 name: 'Storage',
97 key: 'storage',
98 url: `/project/${ref}/observability/storage${preservedQueryParams}`,
99 },
100 ]
101 : []),
102 {
103 name: 'Realtime',
104 key: 'realtime',
105 url: `/project/${ref}/observability/realtime${preservedQueryParams}`,
106 },
107 ]
108
109 const sections: ObservabilityMenuSection[] = [
110 {
111 title: 'GENERAL',
112 key: 'general-section',
113 items: generalItems,
114 },
115 ]
116
117 if (isPlatform) {
118 sections.push({
119 title: 'PRODUCT',
120 key: 'product-section',
121 items: productItems,
122 })
123 }
124
125 return sections
126}