From 62e5e3eb6087c6cd952a06a0336fd44e5ff5560b Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Fri, 15 May 2026 16:32:48 +0200 Subject: [PATCH] feat(06-01): add river dependency and ListOrphanFiles sqlc query - go get github.com/riverqueue/river@v0.37.0 + riverpgxv5@v0.37.0 - append ListOrphanFiles :many query to files.sql (orphan tablo_files rows) - regenerate sqlc: ListOrphanFilesRow{ID, TabloID, S3Key} exported - go build ./... exits 0 --- backend/go.mod | 14 ++++++++++++++ backend/go.sum | 23 +++++++++++++++++++++++ backend/internal/db/queries/files.sql | 9 +++++++++ 3 files changed, 46 insertions(+) diff --git a/backend/go.mod b/backend/go.mod index 26cc19d..752a07a 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -32,14 +32,28 @@ require ( github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect github.com/aws/smithy-go v1.25.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/gorilla/securecookie v1.1.2 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/mfridman/interpolate v0.0.2 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/riverqueue/river v0.37.0 // indirect + github.com/riverqueue/river/riverdriver v0.37.0 // indirect + github.com/riverqueue/river/riverdriver/riverpgxv5 v0.37.0 // indirect + github.com/riverqueue/river/rivershared v0.37.0 // indirect + github.com/riverqueue/river/rivertype v0.37.0 // indirect github.com/sethvargo/go-retry v0.3.0 // indirect + github.com/stretchr/testify v1.11.1 // indirect + github.com/tidwall/gjson v1.19.0 // indirect + github.com/tidwall/match v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect + github.com/tidwall/sjson v1.2.5 // indirect + go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/sync v0.20.0 // indirect golang.org/x/sys v0.44.0 // indirect golang.org/x/text v0.37.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/backend/go.sum b/backend/go.sum index 2bbb250..cc00de1 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -73,6 +73,16 @@ github.com/pressly/goose/v3 v3.27.1 h1:6uEvcprBybDmW4hcz3gYujhARhye+GoWKhEWyzD5s github.com/pressly/goose/v3 v3.27.1/go.mod h1:maruOxsPnIG2yHHyo8UqKWXYKFcH7Q76csUV7+7KYoM= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/riverqueue/river v0.37.0 h1:H7XGinFikesDOQ+SOGOIvG08aoPdQNvpHHueXqqJHDs= +github.com/riverqueue/river v0.37.0/go.mod h1:/XwUepcSte7I7yU75MLz9rZ5yg1Fnl1nVuGjDtkR8Dw= +github.com/riverqueue/river/riverdriver v0.37.0 h1:eqsCm98mEu3vlDQ6HPJnoz8YciZy619NJxZkY3kBtnc= +github.com/riverqueue/river/riverdriver v0.37.0/go.mod h1:qDgQFPYJ1lNlL1M1LH4J8LnikKV1iTxAPMu6Gkahg8k= +github.com/riverqueue/river/riverdriver/riverpgxv5 v0.37.0 h1:ky8euhoLDJv/aHHyCiEzUTUgNM7MlAUU5pCjLA0zx4A= +github.com/riverqueue/river/riverdriver/riverpgxv5 v0.37.0/go.mod h1:Shg7Pws0iEcHdvv8A5vfK83t7NOnm0f/y1/VJCzFvVs= +github.com/riverqueue/river/rivershared v0.37.0 h1:HeTN13wvPJKgsetgu14cWUbn8W+XBSvEoGIQER6yGVw= +github.com/riverqueue/river/rivershared v0.37.0/go.mod h1:B3EaZVnamWKrWmvX1Uyvr5mMIu7+ZKQnOiYDx53WMV8= +github.com/riverqueue/river/rivertype v0.37.0 h1:h01inCs6s0hhXRMTyW4LikUOHHq5o9tXLStVvG4zwfQ= +github.com/riverqueue/river/rivertype v0.37.0/go.mod h1:D1Ad+EaZiaXbQbJcJcfeicXJMBKno0n6UcfKI5Q7DIQ= github.com/sethvargo/go-retry v0.3.0 h1:EEt31A35QhrcRZtrYFDTBg91cqZVnFL2navjDrah2SE= github.com/sethvargo/go-retry v0.3.0/go.mod h1:mNX17F0C/HguQMyMyJxcnU471gOZGxCLyYaFyAZraas= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -80,6 +90,19 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= +github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= +github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= diff --git a/backend/internal/db/queries/files.sql b/backend/internal/db/queries/files.sql index 9207ef5..2a2cc99 100644 --- a/backend/internal/db/queries/files.sql +++ b/backend/internal/db/queries/files.sql @@ -16,3 +16,12 @@ WHERE id = $1 AND tablo_id = $2; -- name: DeleteTabloFile :exec DELETE FROM tablo_files WHERE id = $1 AND tablo_id = $2; + +-- Find tablo_files rows whose owning tablo no longer exists. +-- Used by the orphan-file cleanup worker (Phase 6 WORK-02). +-- name: ListOrphanFiles :many +SELECT id, tablo_id, s3_key +FROM tablo_files tf +WHERE NOT EXISTS ( + SELECT 1 FROM tablos t WHERE t.id = tf.tablo_id +);