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 (str) – User ID

  • provider (str) – LLM provider

  • model (str) – Model name

  • query (str) – User query

  • response_text (str | None) – Generated text (optional)

  • token_count (int) – Number of tokens processed

  • cost (float) – Cost in credits

  • duration (float) – Request processing time in seconds

  • success (bool) – Whether the request succeeded

  • error (str | None) – Error message if request failed (optional)

  • metadata (dict[str, Any] | None) – 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 (str) – Unique request identifier

  • user_id (str | None) – User ID if authenticated

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

  • model (str) – Model name

  • query (str) – User query

  • response_text (str | None) – Generated text (optional)

  • duration (float) – Request processing time in seconds

  • token_count (int) – Number of tokens processed

  • cost (float) – Cost in credits

  • success (bool) – Whether the request succeeded

  • error (str | None) – Error message if request failed (optional)

  • metadata (dict[str, Any] | None) – Additional metadata (optional)

Returns:

True if logging successful, False otherwise

Return type:

bool

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 (str) – Unique request identifier

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

  • path (str) – Request path

  • user_id (str | None) – User ID if authenticated

  • status_code (int) – HTTP status code

  • duration (float) – Request processing time in seconds

  • request_data (dict[str, Any] | None) – Request body data (optional)

  • response_data (dict[str, Any] | None) – Response data (optional)

  • error (str | None) – Error message if request failed (optional)

  • metadata (dict[str, Any] | None) – Additional metadata (optional)

Returns:

True if logging successful, False otherwise

Return type:

bool

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.

Parameters:

supabase_logger (SupabaseLogger | None)

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

Process the request with detailed logging to Supabase.

Parameters:
  • request (fastapi.Request)

  • call_next (starlette.middleware.base.RequestResponseEndpoint)

Return type:

fastapi.Response

logger
dataflow.api.middleware.supabase_logging.logger