1// Code generated by sqlc. DO NOT EDIT.
2// versions:
3// sqlc v1.22.0
4// source: files.sql
5
6package db
7
8import (
9 "context"
10)
11
12const createFile = `-- name: CreateFile :one
13INSERT INTO files (
14 id,
15 session_id,
16 path,
17 content,
18 version,
19 created_at,
20 updated_at
21) VALUES (
22 ?, ?, ?, ?, ?, strftime('%s', 'now'), strftime('%s', 'now')
23)
24RETURNING id, session_id, path, content, version, created_at, updated_at
25`
26
27type CreateFileParams struct {
28 ID string `json:"id"`
29 SessionID string `json:"session_id"`
30 Path string `json:"path"`
31 Content string `json:"content"`
32 Version int64 `json:"version"`
33}
34
35func (q *Queries) CreateFile(ctx context.Context, arg CreateFileParams) (File, error) {
36 row := q.queryRow(ctx, q.createFileStmt, createFile,
37 arg.ID,
38 arg.SessionID,
39 arg.Path,
40 arg.Content,
41 arg.Version,
42 )
43 var i File
44 err := row.Scan(
45 &i.ID,
46 &i.SessionID,
47 &i.Path,
48 &i.Content,
49 &i.Version,
50 &i.CreatedAt,
51 &i.UpdatedAt,
52 )
53 return i, err
54}
55
56const deleteFile = `-- name: DeleteFile :exec
57DELETE FROM files
58WHERE id = ?
59`
60
61func (q *Queries) DeleteFile(ctx context.Context, id string) error {
62 _, err := q.exec(ctx, q.deleteFileStmt, deleteFile, id)
63 return err
64}
65
66const deleteSessionFiles = `-- name: DeleteSessionFiles :exec
67DELETE FROM files
68WHERE session_id = ?
69`
70
71func (q *Queries) DeleteSessionFiles(ctx context.Context, sessionID string) error {
72 _, err := q.exec(ctx, q.deleteSessionFilesStmt, deleteSessionFiles, sessionID)
73 return err
74}
75
76const getFile = `-- name: GetFile :one
77SELECT id, session_id, path, content, version, created_at, updated_at
78FROM files
79WHERE id = ? LIMIT 1
80`
81
82func (q *Queries) GetFile(ctx context.Context, id string) (File, error) {
83 row := q.queryRow(ctx, q.getFileStmt, getFile, id)
84 var i File
85 err := row.Scan(
86 &i.ID,
87 &i.SessionID,
88 &i.Path,
89 &i.Content,
90 &i.Version,
91 &i.CreatedAt,
92 &i.UpdatedAt,
93 )
94 return i, err
95}
96
97const getFileByPathAndSession = `-- name: GetFileByPathAndSession :one
98SELECT id, session_id, path, content, version, created_at, updated_at
99FROM files
100WHERE path = ? AND session_id = ?
101ORDER BY version DESC, created_at DESC
102LIMIT 1
103`
104
105type GetFileByPathAndSessionParams struct {
106 Path string `json:"path"`
107 SessionID string `json:"session_id"`
108}
109
110func (q *Queries) GetFileByPathAndSession(ctx context.Context, arg GetFileByPathAndSessionParams) (File, error) {
111 row := q.queryRow(ctx, q.getFileByPathAndSessionStmt, getFileByPathAndSession, arg.Path, arg.SessionID)
112 var i File
113 err := row.Scan(
114 &i.ID,
115 &i.SessionID,
116 &i.Path,
117 &i.Content,
118 &i.Version,
119 &i.CreatedAt,
120 &i.UpdatedAt,
121 )
122 return i, err
123}
124
125const listFilesByPath = `-- name: ListFilesByPath :many
126SELECT id, session_id, path, content, version, created_at, updated_at
127FROM files
128WHERE path = ?
129ORDER BY version DESC, created_at DESC
130`
131
132func (q *Queries) ListFilesByPath(ctx context.Context, path string) ([]File, error) {
133 rows, err := q.query(ctx, q.listFilesByPathStmt, listFilesByPath, path)
134 if err != nil {
135 return nil, err
136 }
137 defer rows.Close()
138 items := []File{}
139 for rows.Next() {
140 var i File
141 if err := rows.Scan(
142 &i.ID,
143 &i.SessionID,
144 &i.Path,
145 &i.Content,
146 &i.Version,
147 &i.CreatedAt,
148 &i.UpdatedAt,
149 ); err != nil {
150 return nil, err
151 }
152 items = append(items, i)
153 }
154 if err := rows.Close(); err != nil {
155 return nil, err
156 }
157 if err := rows.Err(); err != nil {
158 return nil, err
159 }
160 return items, nil
161}
162
163const listFilesBySession = `-- name: ListFilesBySession :many
164SELECT id, session_id, path, content, version, created_at, updated_at
165FROM files
166WHERE session_id = ?
167ORDER BY version ASC, created_at ASC
168`
169
170func (q *Queries) ListFilesBySession(ctx context.Context, sessionID string) ([]File, error) {
171 rows, err := q.query(ctx, q.listFilesBySessionStmt, listFilesBySession, sessionID)
172 if err != nil {
173 return nil, err
174 }
175 defer rows.Close()
176 items := []File{}
177 for rows.Next() {
178 var i File
179 if err := rows.Scan(
180 &i.ID,
181 &i.SessionID,
182 &i.Path,
183 &i.Content,
184 &i.Version,
185 &i.CreatedAt,
186 &i.UpdatedAt,
187 ); err != nil {
188 return nil, err
189 }
190 items = append(items, i)
191 }
192 if err := rows.Close(); err != nil {
193 return nil, err
194 }
195 if err := rows.Err(); err != nil {
196 return nil, err
197 }
198 return items, nil
199}
200
201const listLatestSessionFiles = `-- name: ListLatestSessionFiles :many
202SELECT f.id, f.session_id, f.path, f.content, f.version, f.created_at, f.updated_at
203FROM files f
204INNER JOIN (
205 SELECT path, MAX(version) as max_version, MAX(created_at) as max_created_at
206 FROM files
207 GROUP BY path
208) latest ON f.path = latest.path AND f.version = latest.max_version AND f.created_at = latest.max_created_at
209WHERE f.session_id = ?
210ORDER BY f.path
211`
212
213func (q *Queries) ListLatestSessionFiles(ctx context.Context, sessionID string) ([]File, error) {
214 rows, err := q.query(ctx, q.listLatestSessionFilesStmt, listLatestSessionFiles, sessionID)
215 if err != nil {
216 return nil, err
217 }
218 defer rows.Close()
219 items := []File{}
220 for rows.Next() {
221 var i File
222 if err := rows.Scan(
223 &i.ID,
224 &i.SessionID,
225 &i.Path,
226 &i.Content,
227 &i.Version,
228 &i.CreatedAt,
229 &i.UpdatedAt,
230 ); err != nil {
231 return nil, err
232 }
233 items = append(items, i)
234 }
235 if err := rows.Close(); err != nil {
236 return nil, err
237 }
238 if err := rows.Err(); err != nil {
239 return nil, err
240 }
241 return items, nil
242}
243
244const listNewFiles = `-- name: ListNewFiles :many
245SELECT id, session_id, path, content, version, created_at, updated_at
246FROM files
247WHERE is_new = 1
248ORDER BY version DESC, created_at DESC
249`
250
251func (q *Queries) ListNewFiles(ctx context.Context) ([]File, error) {
252 rows, err := q.query(ctx, q.listNewFilesStmt, listNewFiles)
253 if err != nil {
254 return nil, err
255 }
256 defer rows.Close()
257 items := []File{}
258 for rows.Next() {
259 var i File
260 if err := rows.Scan(
261 &i.ID,
262 &i.SessionID,
263 &i.Path,
264 &i.Content,
265 &i.Version,
266 &i.CreatedAt,
267 &i.UpdatedAt,
268 ); err != nil {
269 return nil, err
270 }
271 items = append(items, i)
272 }
273 if err := rows.Close(); err != nil {
274 return nil, err
275 }
276 if err := rows.Err(); err != nil {
277 return nil, err
278 }
279 return items, nil
280}