mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-21 13:11:12 -05:00
Persist spans to DB via logger
Implement fire-and-forget span persistence: - Add logSpanToDatabase and persistSpanToDatabase to logger - Persist spans, attributes, events, and event attributes to new tables - Wire edgeFunctionWrapper to call DB persistence after each span - Create required tables, views, and security policies - Ensure non-blocking and guard for missing Supabase creds
This commit is contained in:
@@ -15,8 +15,9 @@ import {
|
||||
endSpan,
|
||||
addSpanEvent,
|
||||
logSpan,
|
||||
logSpanToDatabase,
|
||||
extractSpanContextFromHeaders,
|
||||
type Span
|
||||
type Span
|
||||
} from './logger.ts';
|
||||
import { formatEdgeError, toError } from './errorFormatter.ts';
|
||||
import { ValidationError, logValidationError } from './typeValidation.ts';
|
||||
@@ -188,6 +189,7 @@ export function wrapEdgeFunction(
|
||||
|
||||
endSpan(span, 'ok');
|
||||
logSpan(span);
|
||||
logSpanToDatabase(span, requestId);
|
||||
|
||||
// Clone response to add tracking headers
|
||||
const responseBody = await response.text();
|
||||
@@ -221,6 +223,7 @@ export function wrapEdgeFunction(
|
||||
logValidationError(error, requestId, name);
|
||||
endSpan(span, 'error', error);
|
||||
logSpan(span);
|
||||
logSpanToDatabase(span, requestId);
|
||||
|
||||
const duration = span.endTime ? span.duration : Date.now() - span.startTime;
|
||||
|
||||
@@ -291,6 +294,7 @@ export function wrapEdgeFunction(
|
||||
|
||||
endSpan(span, 'error', error);
|
||||
logSpan(span);
|
||||
logSpanToDatabase(span, requestId);
|
||||
|
||||
const duration = span.endTime ? span.duration : Date.now() - span.startTime;
|
||||
|
||||
@@ -333,6 +337,7 @@ export function wrapEdgeFunction(
|
||||
|
||||
endSpan(span, 'error', error);
|
||||
logSpan(span);
|
||||
logSpanToDatabase(span, requestId);
|
||||
|
||||
const duration = span.endTime ? span.duration : Date.now() - span.startTime;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user