1// Code generated by sqlc. DO NOT EDIT.
2// versions:
3// sqlc v1.30.0
4// source: sessions.sql
5
6package db
7
8import (
9 "context"
10 "database/sql"
11)
12
13const createSession = `-- name: CreateSession :one
14INSERT INTO sessions (
15 id,
16 parent_session_id,
17 title,
18 message_count,
19 prompt_tokens,
20 completion_tokens,
21 cost,
22 summary_message_id,
23 updated_at,
24 created_at
25) VALUES (
26 ?,
27 ?,
28 ?,
29 ?,
30 ?,
31 ?,
32 ?,
33 null,
34 strftime('%s', 'now'),
35 strftime('%s', 'now')
36) RETURNING id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos, models
37`
38
39type CreateSessionParams struct {
40 ID string `json:"id"`
41 ParentSessionID sql.NullString `json:"parent_session_id"`
42 Title string `json:"title"`
43 MessageCount int64 `json:"message_count"`
44 PromptTokens int64 `json:"prompt_tokens"`
45 CompletionTokens int64 `json:"completion_tokens"`
46 Cost float64 `json:"cost"`
47}
48
49func (q *Queries) CreateSession(ctx context.Context, arg CreateSessionParams) (Session, error) {
50 row := q.queryRow(ctx, q.createSessionStmt, createSession,
51 arg.ID,
52 arg.ParentSessionID,
53 arg.Title,
54 arg.MessageCount,
55 arg.PromptTokens,
56 arg.CompletionTokens,
57 arg.Cost,
58 )
59 var i Session
60 err := row.Scan(
61 &i.ID,
62 &i.ParentSessionID,
63 &i.Title,
64 &i.MessageCount,
65 &i.PromptTokens,
66 &i.CompletionTokens,
67 &i.Cost,
68 &i.UpdatedAt,
69 &i.CreatedAt,
70 &i.SummaryMessageID,
71 &i.Todos,
72 &i.Models,
73 )
74 return i, err
75}
76
77const deleteSession = `-- name: DeleteSession :exec
78DELETE FROM sessions
79WHERE id = ?
80`
81
82func (q *Queries) DeleteSession(ctx context.Context, id string) error {
83 _, err := q.exec(ctx, q.deleteSessionStmt, deleteSession, id)
84 return err
85}
86
87const getLastSession = `-- name: GetLastSession :one
88SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos, models
89FROM sessions
90ORDER BY updated_at DESC
91LIMIT 1
92`
93
94func (q *Queries) GetLastSession(ctx context.Context) (Session, error) {
95 row := q.queryRow(ctx, q.getLastSessionStmt, getLastSession)
96 var i Session
97 err := row.Scan(
98 &i.ID,
99 &i.ParentSessionID,
100 &i.Title,
101 &i.MessageCount,
102 &i.PromptTokens,
103 &i.CompletionTokens,
104 &i.Cost,
105 &i.UpdatedAt,
106 &i.CreatedAt,
107 &i.SummaryMessageID,
108 &i.Todos,
109 &i.Models,
110 )
111 return i, err
112}
113
114const getSessionByID = `-- name: GetSessionByID :one
115SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos, models
116FROM sessions
117WHERE id = ? LIMIT 1
118`
119
120func (q *Queries) GetSessionByID(ctx context.Context, id string) (Session, error) {
121 row := q.queryRow(ctx, q.getSessionByIDStmt, getSessionByID, id)
122 var i Session
123 err := row.Scan(
124 &i.ID,
125 &i.ParentSessionID,
126 &i.Title,
127 &i.MessageCount,
128 &i.PromptTokens,
129 &i.CompletionTokens,
130 &i.Cost,
131 &i.UpdatedAt,
132 &i.CreatedAt,
133 &i.SummaryMessageID,
134 &i.Todos,
135 &i.Models,
136 )
137 return i, err
138}
139
140const listSessions = `-- name: ListSessions :many
141SELECT id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos, models
142FROM sessions
143WHERE parent_session_id is NULL
144ORDER BY updated_at DESC
145`
146
147func (q *Queries) ListSessions(ctx context.Context) ([]Session, error) {
148 rows, err := q.query(ctx, q.listSessionsStmt, listSessions)
149 if err != nil {
150 return nil, err
151 }
152 defer rows.Close()
153 items := []Session{}
154 for rows.Next() {
155 var i Session
156 if err := rows.Scan(
157 &i.ID,
158 &i.ParentSessionID,
159 &i.Title,
160 &i.MessageCount,
161 &i.PromptTokens,
162 &i.CompletionTokens,
163 &i.Cost,
164 &i.UpdatedAt,
165 &i.CreatedAt,
166 &i.SummaryMessageID,
167 &i.Todos,
168 &i.Models,
169 ); err != nil {
170 return nil, err
171 }
172 items = append(items, i)
173 }
174 if err := rows.Close(); err != nil {
175 return nil, err
176 }
177 if err := rows.Err(); err != nil {
178 return nil, err
179 }
180 return items, nil
181}
182
183const renameSession = `-- name: RenameSession :exec
184UPDATE sessions
185SET
186 title = ?
187WHERE id = ?
188`
189
190type RenameSessionParams struct {
191 Title string `json:"title"`
192 ID string `json:"id"`
193}
194
195func (q *Queries) RenameSession(ctx context.Context, arg RenameSessionParams) error {
196 _, err := q.exec(ctx, q.renameSessionStmt, renameSession, arg.Title, arg.ID)
197 return err
198}
199
200const updateSession = `-- name: UpdateSession :one
201UPDATE sessions
202SET
203 title = ?,
204 prompt_tokens = ?,
205 completion_tokens = ?,
206 summary_message_id = ?,
207 cost = ?,
208 todos = ?
209WHERE id = ?
210RETURNING id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos, models
211`
212
213type UpdateSessionParams struct {
214 Title string `json:"title"`
215 PromptTokens int64 `json:"prompt_tokens"`
216 CompletionTokens int64 `json:"completion_tokens"`
217 SummaryMessageID sql.NullString `json:"summary_message_id"`
218 Cost float64 `json:"cost"`
219 Todos sql.NullString `json:"todos"`
220 ID string `json:"id"`
221}
222
223func (q *Queries) UpdateSession(ctx context.Context, arg UpdateSessionParams) (Session, error) {
224 row := q.queryRow(ctx, q.updateSessionStmt, updateSession,
225 arg.Title,
226 arg.PromptTokens,
227 arg.CompletionTokens,
228 arg.SummaryMessageID,
229 arg.Cost,
230 arg.Todos,
231 arg.ID,
232 )
233 var i Session
234 err := row.Scan(
235 &i.ID,
236 &i.ParentSessionID,
237 &i.Title,
238 &i.MessageCount,
239 &i.PromptTokens,
240 &i.CompletionTokens,
241 &i.Cost,
242 &i.UpdatedAt,
243 &i.CreatedAt,
244 &i.SummaryMessageID,
245 &i.Todos,
246 &i.Models,
247 )
248 return i, err
249}
250
251const updateSessionModels = `-- name: UpdateSessionModels :one
252UPDATE sessions
253SET models = ?
254WHERE id = ?
255RETURNING id, parent_session_id, title, message_count, prompt_tokens, completion_tokens, cost, updated_at, created_at, summary_message_id, todos, models
256`
257
258type UpdateSessionModelsParams struct {
259 Models sql.NullString `json:"models"`
260 ID string `json:"id"`
261}
262
263func (q *Queries) UpdateSessionModels(ctx context.Context, arg UpdateSessionModelsParams) (Session, error) {
264 row := q.queryRow(ctx, q.updateSessionModelsStmt, updateSessionModels, arg.Models, arg.ID)
265 var i Session
266 err := row.Scan(
267 &i.ID,
268 &i.ParentSessionID,
269 &i.Title,
270 &i.MessageCount,
271 &i.PromptTokens,
272 &i.CompletionTokens,
273 &i.Cost,
274 &i.UpdatedAt,
275 &i.CreatedAt,
276 &i.SummaryMessageID,
277 &i.Todos,
278 &i.Models,
279 )
280 return i, err
281}
282
283const updateSessionTitleAndUsage = `-- name: UpdateSessionTitleAndUsage :exec
284UPDATE sessions
285SET
286 title = ?,
287 prompt_tokens = prompt_tokens + ?,
288 completion_tokens = completion_tokens + ?,
289 cost = cost + ?,
290 updated_at = strftime('%s', 'now')
291WHERE id = ?
292`
293
294type UpdateSessionTitleAndUsageParams struct {
295 Title string `json:"title"`
296 PromptTokens int64 `json:"prompt_tokens"`
297 CompletionTokens int64 `json:"completion_tokens"`
298 Cost float64 `json:"cost"`
299 ID string `json:"id"`
300}
301
302func (q *Queries) UpdateSessionTitleAndUsage(ctx context.Context, arg UpdateSessionTitleAndUsageParams) error {
303 _, err := q.exec(ctx, q.updateSessionTitleAndUsageStmt, updateSessionTitleAndUsage,
304 arg.Title,
305 arg.PromptTokens,
306 arg.CompletionTokens,
307 arg.Cost,
308 arg.ID,
309 )
310 return err
311}