dataflow.api.middleware.supabase_logging

Attributes

Classes

LLMLogger

Utility class for logging LLM requests.

SupabaseLogger

Class for logging to Supabase database.

SupabaseLoggingMiddleware

Middleware for logging all API requests to Supabase.

Module Contents

class dataflow.api.middleware.supabase_logging.LLMLogger

Utility class for logging LLM requests.

async log_llm_request(user_id: str, provider: str, model: str, query: str, response_text: str | None = None, token_count: int = 0, cost: float = 0.0, duration: float = 0.0, success: bool = True, error: str | None = None, metadata: dict[str, Any] | None = None)

Log an LLM request to both console and Supabase.

Parameters:
  • user_id – User ID

  • provider – LLM provider

  • model – Model name

  • query – User query

  • response_text – Generated text (optional)

  • token_count – Number of tokens processed

  • cost – Cost in credits

  • duration – Request processing time in seconds

  • success – Whether the request succeeded

  • error – Error message if request failed (optional)

  • metadata – Additional metadata (optional)

supabase_logger
class dataflow.api.middleware.supabase_logging.SupabaseLogger

Class for logging to Supabase database.

async log_llm_request(request_id: str, user_id: str | None, provider: str, model: str, query: str, response_text: str | None, duration: float, token_count: int, cost: float, success: bool, error: str | None = None, metadata: dict[str, Any] | None = None) bool

Log an LLM API request to Supabase.

Parameters:
  • request_id – Unique request identifier

  • user_id – User ID if authenticated

  • provider – LLM provider (e.g., “azure”, “anthropic”)

  • model – Model name

  • query – User query

  • response_text – Generated text (optional)

  • duration – Request processing time in seconds

  • token_count – Number of tokens processed

  • cost – Cost in credits

  • success – Whether the request succeeded

  • error – Error message if request failed (optional)

  • metadata – Additional metadata (optional)

Returns:

True if logging successful, False otherwise

async log_request(request_id: str, method: str, path: str, user_id: str | None, status_code: int, duration: float, request_data: dict[str, Any] | None = None, response_data: dict[str, Any] | None = None, error: str | None = None, metadata: dict[str, Any] | None = None) bool

Log an API request to Supabase.

Parameters:
  • request_id – Unique request identifier

  • method – HTTP method (GET, POST, etc.)

  • path – Request path

  • user_id – User ID if authenticated

  • status_code – HTTP status code

  • duration – Request processing time in seconds

  • request_data – Request body data (optional)

  • response_data – Response data (optional)

  • error – Error message if request failed (optional)

  • metadata – Additional metadata (optional)

Returns:

True if logging successful, False otherwise

property client

Lazy-loaded Supabase admin client.

config
class dataflow.api.middleware.supabase_logging.SupabaseLoggingMiddleware(app, supabase_logger: SupabaseLogger | None = None)

Bases: starlette.middleware.base.BaseHTTPMiddleware

Middleware for logging all API requests to Supabase.

async dispatch(request: fastapi.Request, call_next: starlette.middleware.base.RequestResponseEndpoint) fastapi.Response

Process the request with detailed logging to Supabase.

logger
dataflow.api.middleware.supabase_logging.logger