| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- // Code generated by sqlc. DO NOT EDIT.
- // versions:
- // sqlc v1.30.0
- // source: stats.sql
- package db
- import (
- "context"
- "database/sql"
- )
- const getAverageResponseTime = `-- name: GetAverageResponseTime :one
- SELECT
- CAST(COALESCE(AVG(finished_at - created_at), 0) AS INTEGER) as avg_response_seconds
- FROM messages
- WHERE role = 'assistant'
- AND finished_at IS NOT NULL
- AND finished_at > created_at
- `
- func (q *Queries) GetAverageResponseTime(ctx context.Context) (int64, error) {
- row := q.queryRow(ctx, q.getAverageResponseTimeStmt, getAverageResponseTime)
- var avg_response_seconds int64
- err := row.Scan(&avg_response_seconds)
- return avg_response_seconds, err
- }
- const getHourDayHeatmap = `-- name: GetHourDayHeatmap :many
- SELECT
- CAST(strftime('%w', created_at, 'unixepoch') AS INTEGER) as day_of_week,
- CAST(strftime('%H', created_at, 'unixepoch') AS INTEGER) as hour,
- COUNT(*) as session_count
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY day_of_week, hour
- ORDER BY day_of_week, hour
- `
- type GetHourDayHeatmapRow struct {
- DayOfWeek int64 `json:"day_of_week"`
- Hour int64 `json:"hour"`
- SessionCount int64 `json:"session_count"`
- }
- func (q *Queries) GetHourDayHeatmap(ctx context.Context) ([]GetHourDayHeatmapRow, error) {
- rows, err := q.query(ctx, q.getHourDayHeatmapStmt, getHourDayHeatmap)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- items := []GetHourDayHeatmapRow{}
- for rows.Next() {
- var i GetHourDayHeatmapRow
- if err := rows.Scan(&i.DayOfWeek, &i.Hour, &i.SessionCount); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
- }
- const getRecentActivity = `-- name: GetRecentActivity :many
- SELECT
- date(created_at, 'unixepoch') as day,
- COUNT(*) as session_count,
- SUM(prompt_tokens + completion_tokens) as total_tokens,
- SUM(cost) as cost
- FROM sessions
- WHERE parent_session_id IS NULL
- AND created_at >= strftime('%s', 'now', '-30 days')
- GROUP BY date(created_at, 'unixepoch')
- ORDER BY day ASC
- `
- type GetRecentActivityRow struct {
- Day interface{} `json:"day"`
- SessionCount int64 `json:"session_count"`
- TotalTokens sql.NullFloat64 `json:"total_tokens"`
- Cost sql.NullFloat64 `json:"cost"`
- }
- func (q *Queries) GetRecentActivity(ctx context.Context) ([]GetRecentActivityRow, error) {
- rows, err := q.query(ctx, q.getRecentActivityStmt, getRecentActivity)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- items := []GetRecentActivityRow{}
- for rows.Next() {
- var i GetRecentActivityRow
- if err := rows.Scan(
- &i.Day,
- &i.SessionCount,
- &i.TotalTokens,
- &i.Cost,
- ); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
- }
- const getToolUsage = `-- name: GetToolUsage :many
- SELECT
- json_extract(value, '$.data.name') as tool_name,
- COUNT(*) as call_count
- FROM messages, json_each(parts)
- WHERE json_extract(value, '$.type') = 'tool_call'
- AND json_extract(value, '$.data.name') IS NOT NULL
- GROUP BY tool_name
- ORDER BY call_count DESC
- `
- type GetToolUsageRow struct {
- ToolName interface{} `json:"tool_name"`
- CallCount int64 `json:"call_count"`
- }
- func (q *Queries) GetToolUsage(ctx context.Context) ([]GetToolUsageRow, error) {
- rows, err := q.query(ctx, q.getToolUsageStmt, getToolUsage)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- items := []GetToolUsageRow{}
- for rows.Next() {
- var i GetToolUsageRow
- if err := rows.Scan(&i.ToolName, &i.CallCount); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
- }
- const getTotalStats = `-- name: GetTotalStats :one
- SELECT
- COUNT(*) as total_sessions,
- COALESCE(SUM(prompt_tokens), 0) as total_prompt_tokens,
- COALESCE(SUM(completion_tokens), 0) as total_completion_tokens,
- COALESCE(SUM(cost), 0) as total_cost,
- COALESCE(SUM(message_count), 0) as total_messages,
- COALESCE(AVG(prompt_tokens + completion_tokens), 0) as avg_tokens_per_session,
- COALESCE(AVG(message_count), 0) as avg_messages_per_session
- FROM sessions
- WHERE parent_session_id IS NULL
- `
- type GetTotalStatsRow struct {
- TotalSessions int64 `json:"total_sessions"`
- TotalPromptTokens interface{} `json:"total_prompt_tokens"`
- TotalCompletionTokens interface{} `json:"total_completion_tokens"`
- TotalCost interface{} `json:"total_cost"`
- TotalMessages interface{} `json:"total_messages"`
- AvgTokensPerSession interface{} `json:"avg_tokens_per_session"`
- AvgMessagesPerSession interface{} `json:"avg_messages_per_session"`
- }
- func (q *Queries) GetTotalStats(ctx context.Context) (GetTotalStatsRow, error) {
- row := q.queryRow(ctx, q.getTotalStatsStmt, getTotalStats)
- var i GetTotalStatsRow
- err := row.Scan(
- &i.TotalSessions,
- &i.TotalPromptTokens,
- &i.TotalCompletionTokens,
- &i.TotalCost,
- &i.TotalMessages,
- &i.AvgTokensPerSession,
- &i.AvgMessagesPerSession,
- )
- return i, err
- }
- const getUsageByDay = `-- name: GetUsageByDay :many
- SELECT
- date(created_at, 'unixepoch') as day,
- SUM(prompt_tokens) as prompt_tokens,
- SUM(completion_tokens) as completion_tokens,
- SUM(cost) as cost,
- COUNT(*) as session_count
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY date(created_at, 'unixepoch')
- ORDER BY day DESC
- `
- type GetUsageByDayRow struct {
- Day interface{} `json:"day"`
- PromptTokens sql.NullFloat64 `json:"prompt_tokens"`
- CompletionTokens sql.NullFloat64 `json:"completion_tokens"`
- Cost sql.NullFloat64 `json:"cost"`
- SessionCount int64 `json:"session_count"`
- }
- func (q *Queries) GetUsageByDay(ctx context.Context) ([]GetUsageByDayRow, error) {
- rows, err := q.query(ctx, q.getUsageByDayStmt, getUsageByDay)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- items := []GetUsageByDayRow{}
- for rows.Next() {
- var i GetUsageByDayRow
- if err := rows.Scan(
- &i.Day,
- &i.PromptTokens,
- &i.CompletionTokens,
- &i.Cost,
- &i.SessionCount,
- ); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
- }
- const getUsageByDayOfWeek = `-- name: GetUsageByDayOfWeek :many
- SELECT
- CAST(strftime('%w', created_at, 'unixepoch') AS INTEGER) as day_of_week,
- COUNT(*) as session_count,
- SUM(prompt_tokens) as prompt_tokens,
- SUM(completion_tokens) as completion_tokens
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY day_of_week
- ORDER BY day_of_week
- `
- type GetUsageByDayOfWeekRow struct {
- DayOfWeek int64 `json:"day_of_week"`
- SessionCount int64 `json:"session_count"`
- PromptTokens sql.NullFloat64 `json:"prompt_tokens"`
- CompletionTokens sql.NullFloat64 `json:"completion_tokens"`
- }
- func (q *Queries) GetUsageByDayOfWeek(ctx context.Context) ([]GetUsageByDayOfWeekRow, error) {
- rows, err := q.query(ctx, q.getUsageByDayOfWeekStmt, getUsageByDayOfWeek)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- items := []GetUsageByDayOfWeekRow{}
- for rows.Next() {
- var i GetUsageByDayOfWeekRow
- if err := rows.Scan(
- &i.DayOfWeek,
- &i.SessionCount,
- &i.PromptTokens,
- &i.CompletionTokens,
- ); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
- }
- const getUsageByHour = `-- name: GetUsageByHour :many
- SELECT
- CAST(strftime('%H', created_at, 'unixepoch') AS INTEGER) as hour,
- COUNT(*) as session_count
- FROM sessions
- WHERE parent_session_id IS NULL
- GROUP BY hour
- ORDER BY hour
- `
- type GetUsageByHourRow struct {
- Hour int64 `json:"hour"`
- SessionCount int64 `json:"session_count"`
- }
- func (q *Queries) GetUsageByHour(ctx context.Context) ([]GetUsageByHourRow, error) {
- rows, err := q.query(ctx, q.getUsageByHourStmt, getUsageByHour)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- items := []GetUsageByHourRow{}
- for rows.Next() {
- var i GetUsageByHourRow
- if err := rows.Scan(&i.Hour, &i.SessionCount); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
- }
- const getUsageByModel = `-- name: GetUsageByModel :many
- SELECT
- COALESCE(model, 'unknown') as model,
- COALESCE(provider, 'unknown') as provider,
- COUNT(*) as message_count
- FROM messages
- WHERE role = 'assistant'
- GROUP BY model, provider
- ORDER BY message_count DESC
- `
- type GetUsageByModelRow struct {
- Model string `json:"model"`
- Provider string `json:"provider"`
- MessageCount int64 `json:"message_count"`
- }
- func (q *Queries) GetUsageByModel(ctx context.Context) ([]GetUsageByModelRow, error) {
- rows, err := q.query(ctx, q.getUsageByModelStmt, getUsageByModel)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- items := []GetUsageByModelRow{}
- for rows.Next() {
- var i GetUsageByModelRow
- if err := rows.Scan(&i.Model, &i.Provider, &i.MessageCount); err != nil {
- return nil, err
- }
- items = append(items, i)
- }
- if err := rows.Close(); err != nil {
- return nil, err
- }
- if err := rows.Err(); err != nil {
- return nil, err
- }
- return items, nil
- }
|