@@ -12,12 +12,23 @@ export interface TinybirdParams {
1212
1313export async function fetchLLMUsage ( params : TinybirdParams = { } ) {
1414 const searchParams = new URLSearchParams ( ) ;
15+
16+ // Handle column_name separately as it's used for grouping
17+ if ( params . column_name ) {
18+ searchParams . set ( 'column_name' , params . column_name ) ;
19+ }
20+
21+ // Handle all other filter parameters
22+ const filterParams = [ 'model' , 'provider' , 'organization' , 'project' , 'environment' , 'user' ] ;
23+ filterParams . forEach ( param => {
24+ if ( params [ param as keyof TinybirdParams ] ) {
25+ searchParams . set ( param , params [ param as keyof TinybirdParams ] ! ) ;
26+ }
27+ } ) ;
28+
29+ // Handle date range
1530 if ( params . start_date ) searchParams . set ( 'start_date' , params . start_date ) ;
1631 if ( params . end_date ) searchParams . set ( 'end_date' , params . end_date ) ;
17- if ( params . organization ) searchParams . set ( 'organization' , params . organization ) ;
18- if ( params . project ) searchParams . set ( 'project' , params . project ) ;
19- // Default to 'model' if column_name is not provided
20- searchParams . set ( 'column_name' , params . column_name || 'model' ) ;
2132
2233 const response = await fetch (
2334 `${ TINYBIRD_API_URL } /v0/pipes/llm_usage.json?${ searchParams . toString ( ) } ` ,
@@ -28,6 +39,10 @@ export async function fetchLLMUsage(params: TinybirdParams = {}) {
2839 }
2940 ) ;
3041
42+ if ( ! response . ok ) {
43+ throw new Error ( 'Network response was not ok' ) ;
44+ }
45+
3146 return response . json ( ) ;
3247}
3348
0 commit comments