import { Auth, Realtime, Storage } from 'icons' import { ActivityIcon, DatabaseIcon, HeartIcon, ServerIcon } from 'lucide-react' import { ReactNode } from 'react' export type Metric = { key: string label: string provider?: string category?: MetricCategory id?: string } type MetricCategory = { label: string icon: (className?: string) => ReactNode key: string } export const METRIC_CATEGORIES = { API: { label: 'All API usage', icon: (className?: string) => , key: 'api', }, API_DATABASE: { label: 'Database API', icon: (className?: string) => , key: 'api_database', }, API_AUTH: { label: 'Authentication', icon: (className?: string) => , key: 'api_auth', }, API_STORAGE: { label: 'Storage', icon: (className?: string) => , key: 'api_storage', }, API_REALTIME: { label: 'Realtime', icon: (className?: string) => , key: 'api_realtime', }, INSTANCE: { label: 'Instance health', icon: (className?: string) => , key: 'instance', }, SUPAVISOR: { label: 'Supavisor', icon: (className?: string) => , key: 'supavisor', }, } // [Joshen] Eventually we can remove some charts here from DEPRECATED_REPORTS from Reports.constants.ts export const METRICS: Metric[] = [ { key: 'avg_cpu_usage', label: 'Average CPU % Usage', provider: 'infra-monitoring', category: METRIC_CATEGORIES.INSTANCE, }, { key: 'max_cpu_usage', label: 'Max CPU % Usage', provider: 'infra-monitoring', category: METRIC_CATEGORIES.INSTANCE, }, { key: 'disk_io_consumption', label: 'Disk IO % Consumed', provider: 'infra-monitoring', category: METRIC_CATEGORIES.INSTANCE, }, { key: 'disk_io_budget', label: 'Disk IO % Remaining', provider: 'infra-monitoring', category: METRIC_CATEGORIES.INSTANCE, }, { key: 'ram_usage', label: 'Memory % Usage', provider: 'infra-monitoring', category: METRIC_CATEGORIES.INSTANCE, }, { key: 'total_realtime_egress', label: 'Realtime Connection Egress', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_realtime_requests', label: 'Realtime Connection Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_REALTIME, }, { key: 'total_realtime_ingress', label: 'Realtime Connection Ingress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_REALTIME, }, /** * API */ { key: 'total_rest_ingress', label: 'API Ingress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, { key: 'total_rest_egress', label: 'API Egress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, { key: 'total_rest_requests', label: 'API Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, { key: 'total_rest_get_requests', label: 'API GET Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, { key: 'total_rest_post_requests', label: 'API POST Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, { key: 'total_rest_patch_requests', label: 'API PATCH Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, { key: 'total_rest_delete_requests', label: 'API DELETE Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, { key: 'total_rest_options_requests', label: 'API OPTIONS Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_DATABASE, }, /** * Auth */ { key: 'total_auth_billing_period_mau', label: 'Auth Monthly Active User', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_billing_period_sso_mau', label: 'Auth Monthly Active SSO User', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_ingress', label: 'Auth Ingress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_egress', label: 'Auth Egress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_requests', label: 'Auth Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_get_requests', label: 'Auth GET Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_post_requests', label: 'Auth POST Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_patch_requests', label: 'Auth PATCH Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_auth_options_requests', label: 'Auth OPTIONS Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, /** * Storage */ { key: 'total_storage_ingress', label: 'Storage Ingress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_egress', label: 'Storage Egress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_image_render_count', label: 'Storage Image Transformations', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_requests', label: 'Storage Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_get_requests', label: 'Storage GET Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_post_requests', label: 'Storage POST Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_delete_requests', label: 'Storage DELETE Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_options_requests', label: 'Storage OPTIONS Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_auth_delete_requests', label: 'Auth DELETE Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_AUTH, }, { key: 'total_egress', label: 'All Egress', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_get_requests', label: 'All GET Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_cached_egress', label: 'All Cached Egress', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_storage_patch_requests', label: 'Storage PATCH Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API_STORAGE, }, { key: 'total_requests', label: 'All Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_patch_requests', label: 'All PATCH Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_post_requests', label: 'All POST Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_ingress', label: 'All Ingress', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_delete_requests', label: 'All DELETE Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, { key: 'total_options_requests', label: 'All OPTIONS Requests', provider: 'daily-stats', category: METRIC_CATEGORIES.API, }, /** Supavisor */ { key: 'total_supavisor_egress_bytes', label: 'Shared Pooler Egress', provider: 'daily-stats', category: METRIC_CATEGORIES.SUPAVISOR, }, ] export const TIME_PERIODS_BILLING = [ { key: 'currentBillingCycle', label: 'Current billing cycle', interval: '1d', }, { key: 'previousBillingCycle', label: 'Previous billing cycle', interval: '1d', }, ] export const TIME_PERIODS_REPORTS = [ { key: '7d', label: 'Last 7 days', interval: '1d', }, { key: '30d', label: 'Last 30 days', interval: '1d', }, { key: 'startMonth', label: 'This month', interval: '1d', }, ] export const TIME_PERIODS_INFRA = [ { key: '10m', label: 'Last 10 minutes', }, { key: '30m', label: 'Last 30 minutes', }, { key: '1h', label: 'Last hour', }, { key: '3h', label: 'Last 3 hours', }, { key: '1d', label: 'Last 24 hours', }, { key: '7d', label: 'Last 7 days', }, ]