mirror of
https://github.com/supabase/supabase.git
synced 2026-10-12 04:45:08 +03:00
111 lines
3.1 KiB
TypeScript
111 lines
3.1 KiB
TypeScript
export enum LogsTableName {
|
|
FN_EDGE = 'function_edge_logs',
|
|
AUTH = 'auth_logs',
|
|
POSTGRES = 'postgres_logs',
|
|
REALTIME = 'realtime_logs',
|
|
STORAGE = 'storage_logs',
|
|
PG_CRON = 'pg_cron_logs',
|
|
EDGE = 'edge_logs',
|
|
FUNCTIONS = 'function_logs',
|
|
POSTGREST = 'postgrest_logs',
|
|
SUPAVISOR = 'supavisor_logs',
|
|
PGBOUNCER = 'pgbouncer_logs',
|
|
PG_UPGRADE = 'pg_upgrade_logs',
|
|
}
|
|
|
|
const genCrossJoinUnnests = (table: LogsTableName) => {
|
|
switch (table) {
|
|
case LogsTableName.EDGE:
|
|
return `cross join unnest(metadata) as m
|
|
cross join unnest(m.request) as request
|
|
cross join unnest(m.response) as response`
|
|
case LogsTableName.POSTGRES:
|
|
return `cross join unnest(metadata) as m
|
|
cross join unnest(m.parsed) as parsed`
|
|
case LogsTableName.FUNCTIONS:
|
|
return `cross join unnest(metadata) as metadata`
|
|
case LogsTableName.AUTH:
|
|
return `cross join unnest(metadata) as metadata`
|
|
case LogsTableName.FN_EDGE:
|
|
return `cross join unnest(metadata) as m
|
|
cross join unnest(m.response) as response
|
|
cross join unnest(m.request) as request`
|
|
case LogsTableName.SUPAVISOR:
|
|
return `cross join unnest(metadata) as m`
|
|
default:
|
|
return ''
|
|
}
|
|
}
|
|
|
|
export const genDefaultQuery = (table: LogsTableName, limit: number = 100) => {
|
|
const joins = genCrossJoinUnnests(table)
|
|
const orderBy = 'order by timestamp desc'
|
|
|
|
switch (table) {
|
|
case LogsTableName.EDGE:
|
|
return `select id, ${table}.timestamp, event_message, request.method, request.path, request.search, response.status_code
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
case LogsTableName.POSTGRES:
|
|
return `select ${table}.timestamp, id, event_message, parsed.error_severity, parsed.detail, parsed.hint
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
case LogsTableName.FUNCTIONS:
|
|
return `select id, ${table}.timestamp, event_message, metadata.event_type, metadata.function_id, metadata.level
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
case LogsTableName.AUTH:
|
|
return `select id, ${table}.timestamp, event_message, metadata.level, metadata.status, metadata.path, metadata.msg as msg, metadata.error
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
case LogsTableName.FN_EDGE:
|
|
return `select id, ${table}.timestamp, event_message, response.status_code, request.method, m.function_id, m.execution_time_ms, m.deployment_id, m.version
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
case LogsTableName.SUPAVISOR:
|
|
return `select id, ${table}.timestamp, event_message
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
case LogsTableName.PG_UPGRADE:
|
|
return `select id, ${table}.timestamp, event_message
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
case LogsTableName.PG_CRON:
|
|
return `select postgres_logs.timestamp, id, event_message, parsed.error_severity, parsed.query
|
|
from postgres_logs
|
|
cross join unnest(metadata) as m
|
|
cross join unnest(m.parsed) as parsed
|
|
where (parsed.application_name = 'pg_cron' OR event_message LIKE '%cron job%')
|
|
${orderBy}
|
|
limit ${limit}`
|
|
|
|
default:
|
|
return `select id, ${table}.timestamp, event_message
|
|
from ${table}
|
|
${joins}
|
|
${orderBy}
|
|
limit ${limit}`
|
|
}
|
|
}
|