summaryrefslogtreecommitdiffhomepage
path: root/internal/db/sql
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-13 11:29:20 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 13:38:42 +0200
commitd63d0c4c44cb2356645fd112cec01598301f5949 (patch)
treea3a863a1c08ebb34885c1e38cfa76f9515cf7e54 /internal/db/sql
parentbd2ec29b65e430f83f430db5fdc424c7d631989d (diff)
downloadopencode-d63d0c4c44cb2356645fd112cec01598301f5949.tar.gz
opencode-d63d0c4c44cb2356645fd112cec01598301f5949.zip
wip files
Diffstat (limited to 'internal/db/sql')
-rw-r--r--internal/db/sql/files.sql69
1 files changed, 69 insertions, 0 deletions
diff --git a/internal/db/sql/files.sql b/internal/db/sql/files.sql
new file mode 100644
index 000000000..c2e799076
--- /dev/null
+++ b/internal/db/sql/files.sql
@@ -0,0 +1,69 @@
+-- name: GetFile :one
+SELECT *
+FROM files
+WHERE id = ? LIMIT 1;
+
+-- name: GetFileByPathAndSession :one
+SELECT *
+FROM files
+WHERE path = ? AND session_id = ? LIMIT 1;
+
+-- name: ListFilesBySession :many
+SELECT *
+FROM files
+WHERE session_id = ?
+ORDER BY created_at ASC;
+
+-- name: ListFilesByPath :many
+SELECT *
+FROM files
+WHERE path = ?
+ORDER BY created_at DESC;
+
+-- name: CreateFile :one
+INSERT INTO files (
+ id,
+ session_id,
+ path,
+ content,
+ version,
+ created_at,
+ updated_at
+) VALUES (
+ ?, ?, ?, ?, ?, strftime('%s', 'now'), strftime('%s', 'now')
+)
+RETURNING *;
+
+-- name: UpdateFile :one
+UPDATE files
+SET
+ content = ?,
+ version = ?,
+ updated_at = strftime('%s', 'now')
+WHERE id = ?
+RETURNING *;
+
+-- name: DeleteFile :exec
+DELETE FROM files
+WHERE id = ?;
+
+-- name: DeleteSessionFiles :exec
+DELETE FROM files
+WHERE session_id = ?;
+
+-- name: ListLatestSessionFiles :many
+SELECT f.*
+FROM files f
+INNER JOIN (
+ SELECT path, MAX(created_at) as max_created_at
+ FROM files
+ GROUP BY path
+) latest ON f.path = latest.path AND f.created_at = latest.max_created_at
+WHERE f.session_id = ?
+ORDER BY f.path;
+
+-- name: ListNewFiles :many
+SELECT *
+FROM files
+WHERE is_new = 1
+ORDER BY created_at DESC;