217 lines
6.0 KiB
Go
217 lines
6.0 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.30.0
|
|
// source: stats.sql
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
const getSessionFileChangeSummary = `-- name: GetSessionFileChangeSummary :many
|
|
SELECT
|
|
file_path,
|
|
CAST(COALESCE(SUM(added), 0) AS INTEGER) AS total_added,
|
|
CAST(COALESCE(SUM(removed), 0) AS INTEGER) AS total_removed,
|
|
CAST(COUNT(*) AS INTEGER) AS change_count
|
|
FROM file_changes
|
|
WHERE session_id = ?
|
|
GROUP BY file_path
|
|
ORDER BY file_path ASC
|
|
`
|
|
|
|
type GetSessionFileChangeSummaryRow struct {
|
|
FilePath string `json:"file_path"`
|
|
TotalAdded int64 `json:"total_added"`
|
|
TotalRemoved int64 `json:"total_removed"`
|
|
ChangeCount int64 `json:"change_count"`
|
|
}
|
|
|
|
func (q *Queries) GetSessionFileChangeSummary(ctx context.Context, sessionID int64) ([]GetSessionFileChangeSummaryRow, error) {
|
|
rows, err := q.db.QueryContext(ctx, getSessionFileChangeSummary, sessionID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []GetSessionFileChangeSummaryRow{}
|
|
for rows.Next() {
|
|
var i GetSessionFileChangeSummaryRow
|
|
if err := rows.Scan(
|
|
&i.FilePath,
|
|
&i.TotalAdded,
|
|
&i.TotalRemoved,
|
|
&i.ChangeCount,
|
|
); 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 getSessionFileChanges = `-- name: GetSessionFileChanges :many
|
|
SELECT id, session_id, file_path, tool_name, added, removed, created_at FROM file_changes WHERE session_id = ? ORDER BY created_at ASC
|
|
`
|
|
|
|
func (q *Queries) GetSessionFileChanges(ctx context.Context, sessionID int64) ([]FileChange, error) {
|
|
rows, err := q.db.QueryContext(ctx, getSessionFileChanges, sessionID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []FileChange{}
|
|
for rows.Next() {
|
|
var i FileChange
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.SessionID,
|
|
&i.FilePath,
|
|
&i.ToolName,
|
|
&i.Added,
|
|
&i.Removed,
|
|
&i.CreatedAt,
|
|
); 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 getSessionTokenStats = `-- name: GetSessionTokenStats :many
|
|
SELECT id, session_id, turn, eval_count, prompt_tokens, model, created_at FROM token_stats WHERE session_id = ? ORDER BY turn ASC
|
|
`
|
|
|
|
func (q *Queries) GetSessionTokenStats(ctx context.Context, sessionID int64) ([]TokenStat, error) {
|
|
rows, err := q.db.QueryContext(ctx, getSessionTokenStats, sessionID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []TokenStat{}
|
|
for rows.Next() {
|
|
var i TokenStat
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.SessionID,
|
|
&i.Turn,
|
|
&i.EvalCount,
|
|
&i.PromptTokens,
|
|
&i.Model,
|
|
&i.CreatedAt,
|
|
); 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 getSessionTotalTokens = `-- name: GetSessionTotalTokens :one
|
|
SELECT
|
|
CAST(COALESCE(SUM(eval_count), 0) AS INTEGER) AS total_eval,
|
|
CAST(COALESCE(SUM(prompt_tokens), 0) AS INTEGER) AS total_prompt,
|
|
CAST(COUNT(*) AS INTEGER) AS turn_count
|
|
FROM token_stats WHERE session_id = ?
|
|
`
|
|
|
|
type GetSessionTotalTokensRow struct {
|
|
TotalEval int64 `json:"total_eval"`
|
|
TotalPrompt int64 `json:"total_prompt"`
|
|
TurnCount int64 `json:"turn_count"`
|
|
}
|
|
|
|
func (q *Queries) GetSessionTotalTokens(ctx context.Context, sessionID int64) (GetSessionTotalTokensRow, error) {
|
|
row := q.db.QueryRowContext(ctx, getSessionTotalTokens, sessionID)
|
|
var i GetSessionTotalTokensRow
|
|
err := row.Scan(&i.TotalEval, &i.TotalPrompt, &i.TurnCount)
|
|
return i, err
|
|
}
|
|
|
|
const recordFileChange = `-- name: RecordFileChange :one
|
|
INSERT INTO file_changes (session_id, file_path, tool_name, added, removed)
|
|
VALUES (?, ?, ?, ?, ?) RETURNING id, session_id, file_path, tool_name, added, removed, created_at
|
|
`
|
|
|
|
type RecordFileChangeParams struct {
|
|
SessionID int64 `json:"session_id"`
|
|
FilePath string `json:"file_path"`
|
|
ToolName string `json:"tool_name"`
|
|
Added int64 `json:"added"`
|
|
Removed int64 `json:"removed"`
|
|
}
|
|
|
|
func (q *Queries) RecordFileChange(ctx context.Context, arg RecordFileChangeParams) (FileChange, error) {
|
|
row := q.db.QueryRowContext(ctx, recordFileChange,
|
|
arg.SessionID,
|
|
arg.FilePath,
|
|
arg.ToolName,
|
|
arg.Added,
|
|
arg.Removed,
|
|
)
|
|
var i FileChange
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.SessionID,
|
|
&i.FilePath,
|
|
&i.ToolName,
|
|
&i.Added,
|
|
&i.Removed,
|
|
&i.CreatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const recordTokenUsage = `-- name: RecordTokenUsage :one
|
|
INSERT INTO token_stats (session_id, turn, eval_count, prompt_tokens, model)
|
|
VALUES (?, ?, ?, ?, ?) RETURNING id, session_id, turn, eval_count, prompt_tokens, model, created_at
|
|
`
|
|
|
|
type RecordTokenUsageParams struct {
|
|
SessionID int64 `json:"session_id"`
|
|
Turn int64 `json:"turn"`
|
|
EvalCount int64 `json:"eval_count"`
|
|
PromptTokens int64 `json:"prompt_tokens"`
|
|
Model string `json:"model"`
|
|
}
|
|
|
|
func (q *Queries) RecordTokenUsage(ctx context.Context, arg RecordTokenUsageParams) (TokenStat, error) {
|
|
row := q.db.QueryRowContext(ctx, recordTokenUsage,
|
|
arg.SessionID,
|
|
arg.Turn,
|
|
arg.EvalCount,
|
|
arg.PromptTokens,
|
|
arg.Model,
|
|
)
|
|
var i TokenStat
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.SessionID,
|
|
&i.Turn,
|
|
&i.EvalCount,
|
|
&i.PromptTokens,
|
|
&i.Model,
|
|
&i.CreatedAt,
|
|
)
|
|
return i, err
|
|
}
|