1// Code generated by sqlc. DO NOT EDIT.
  2// versions:
  3//   sqlc v1.30.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}