mirror of
https://github.com/supabase/supabase.git
synced 2026-06-28 19:39:19 -04:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import {
|
|
COMPUTE_LABELS,
|
|
THROUGHPUT_TABLE_HEADINGS,
|
|
} from '../../components/RealtimeLimitsEstimator/RealtimeLimitsEstimator.constants'
|
|
import throughputTable from '../../data/realtime/throughput.json'
|
|
|
|
type Row = {
|
|
computeAddOn: string
|
|
filters: boolean
|
|
rls: boolean
|
|
concurrency: number
|
|
maxDBChanges: number
|
|
maxMessagesPerClient: number
|
|
totalMessagesPerSecond: number
|
|
p95Latency: number
|
|
}
|
|
|
|
const headerRow = `| ${THROUGHPUT_TABLE_HEADINGS.join(' | ')} |`
|
|
const dividerRow = `| ${THROUGHPUT_TABLE_HEADINGS.map(() => '---').join(' | ')} |`
|
|
|
|
const renderGroup = (computeAddOn: string): string => {
|
|
const rows = (throughputTable as Row[]).filter((l) => l.computeAddOn === computeAddOn)
|
|
return `#### ${COMPUTE_LABELS[computeAddOn] ?? computeAddOn}
|
|
|
|
${headerRow}
|
|
${dividerRow}
|
|
${rows
|
|
.map(
|
|
(l) =>
|
|
`| ${l.filters ? 'Yes' : 'No'} | ${l.rls ? 'Yes' : 'No'} | ${l.concurrency.toLocaleString()} | ${l.maxDBChanges} | ${l.maxMessagesPerClient} | ${l.totalMessagesPerSecond.toLocaleString()} | ${l.p95Latency}ms |`
|
|
)
|
|
.join('\n')}`
|
|
}
|
|
|
|
export const RealtimeLimitsEstimator = (): string =>
|
|
[...new Set((throughputTable as Row[]).map((l) => l.computeAddOn))].map(renderGroup).join('\n\n')
|