(
baseQuery: SelectQueryBuilder<
DB & {
ul: UsageLog;
},
"ul",
unknown
>,
)
| 126 | }); |
| 127 | |
| 128 | export function getStats( |
| 129 | baseQuery: SelectQueryBuilder< |
| 130 | DB & { |
| 131 | ul: UsageLog; |
| 132 | }, |
| 133 | "ul", |
| 134 | unknown |
| 135 | >, |
| 136 | ) { |
| 137 | return baseQuery |
| 138 | .select(({ fn }) => [ |
| 139 | fn.sum(sql<number>`ul."cost"`).as("cost"), |
| 140 | fn |
| 141 | .sum(sql<number>`case when ul.type = 'TRAINING' then ul.cost else 0 end`) |
| 142 | .as("totalTrainingSpend"), |
| 143 | fn |
| 144 | .sum(sql<number>`case when ul.type != 'TRAINING' then ul.cost else 0 end`) |
| 145 | .as("totalInferenceSpend"), |
| 146 | fn |
| 147 | .sum( |
| 148 | sql<number>`case when ul.type != 'TRAINING' AND ul.type != 'CACHE_HIT' then ul."inputTokens" else 0 end`, |
| 149 | ) |
| 150 | .as("totalInputTokens"), |
| 151 | fn |
| 152 | .sum( |
| 153 | sql<number>`case when ul.type != 'TRAINING' AND ul.type != 'CACHE_HIT' then ul."outputTokens" else 0 end`, |
| 154 | ) |
| 155 | .as("totalOutputTokens"), |
| 156 | fn |
| 157 | .sum( |
| 158 | sql<number>`case when ul.type = 'TRAINING' then ul."inputTokens" + ul."outputTokens" else 0 end`, |
| 159 | ) |
| 160 | .as("totalTrainingTokens"), |
| 161 | fn.count("ul.id").as("numQueries"), |
| 162 | ]) |
| 163 | .executeTakeFirst(); |
| 164 | } |
no outgoing calls
no test coverage detected