@@ -144,31 +144,44 @@ func Update(ctx context.Context, m *gorpmapper.Mapper, db gorpmapper.SqlExecutor
144
144
145
145
func MarkToDeleteByRunIDs (db gorpmapper.SqlExecutorWithTx , runID int64 ) error {
146
146
query := `
147
- UPDATE item SET to_delete = true WHERE (api_ref->>'run_id')::int = $1
147
+ UPDATE item SET to_delete = true WHERE (api_ref->>'run_id')::int = $1
148
148
`
149
149
_ , err := db .Exec (query , runID )
150
150
return sdk .WrapError (err , "unable to mark item to delete for run %d" , runID )
151
151
}
152
152
153
- func LoadFileByProjectAndCacheTag (ctx context.Context , m * gorpmapper.Mapper , db gorp.SqlExecutor , itemType sdk. CDNItemType , projKey string , cacheTag string ) (* sdk.CDNItem , error ) {
153
+ func LoadWorkerCacheItemByProjectAndCacheTag (ctx context.Context , m * gorpmapper.Mapper , db gorp.SqlExecutor , projKey string , cacheTag string ) (* sdk.CDNItem , error ) {
154
154
query := gorpmapper .NewQuery (`
155
155
SELECT *
156
156
FROM item
157
157
WHERE type = $1
158
158
AND (api_ref->>'project_key')::text = $2
159
159
AND (api_ref->>'cache_tag')::text = $3
160
160
AND to_delete = false
161
-
162
- ` ).Args (itemType , projKey , cacheTag )
161
+ ORDER BY created DESC
162
+ LIMIT 1
163
+ ` ).Args (sdk .CDNTypeItemWorkerCache , projKey , cacheTag )
163
164
return getItem (ctx , m , db , query )
164
165
}
165
166
167
+ func LoadWorkerCacheItemsByProjectAndCacheTag (ctx context.Context , m * gorpmapper.Mapper , db gorp.SqlExecutor , projKey string , cacheTag string ) ([]sdk.CDNItem , error ) {
168
+ query := gorpmapper .NewQuery (`
169
+ SELECT *
170
+ FROM item
171
+ WHERE type = $1
172
+ AND (api_ref->>'project_key')::text = $2
173
+ AND (api_ref->>'cache_tag')::text = $3
174
+ AND to_delete = false
175
+ ` ).Args (sdk .CDNTypeItemWorkerCache , projKey , cacheTag )
176
+ return getItems (ctx , m , db , query )
177
+ }
178
+
166
179
// LoadByAPIRefHashAndType load an item by his job id, step order and type
167
180
func LoadByAPIRefHashAndType (ctx context.Context , m * gorpmapper.Mapper , db gorp.SqlExecutor , hash string , itemType sdk.CDNItemType , opts ... gorpmapper.GetOptionFunc ) (* sdk.CDNItem , error ) {
168
181
query := gorpmapper .NewQuery (`
169
182
SELECT *
170
183
FROM item
171
- WHERE api_ref_hash = $1
184
+ WHERE api_ref_hash = $1
172
185
AND type = $2
173
186
AND to_delete = false
174
187
` ).Args (hash , itemType )
@@ -179,7 +192,7 @@ func LoadByAPIRefHashAndType(ctx context.Context, m *gorpmapper.Mapper, db gorp.
179
192
func ComputeSizeByIDs (db gorp.SqlExecutor , itemIDs []string ) (int64 , error ) {
180
193
query := `
181
194
SELECT COALESCE(SUM(size), 0) FROM item
182
- WHERE id = ANY($1)
195
+ WHERE id = ANY($1)
183
196
`
184
197
size , err := db .SelectInt (query , pq .StringArray (itemIDs ))
185
198
if err != nil {
@@ -191,9 +204,9 @@ func ComputeSizeByIDs(db gorp.SqlExecutor, itemIDs []string) (int64, error) {
191
204
func ListNodeRunByProject (db gorp.SqlExecutor , projectKey string ) ([]int64 , error ) {
192
205
var IDs []int64
193
206
query := `
194
- SELECT
207
+ SELECT
195
208
DISTINCT((api_ref->>'node_run_id')::int)
196
- FROM item
209
+ FROM item
197
210
WHERE api_ref->>'project_key' = $1
198
211
`
199
212
_ , err := db .Select (& IDs , query , projectKey )
@@ -206,7 +219,7 @@ func ListNodeRunByProject(db gorp.SqlExecutor, projectKey string) ([]int64, erro
206
219
// ComputeSizeByProjectKey returns the size used by a project
207
220
func ComputeSizeByProjectKey (db gorp.SqlExecutor , projectKey string ) (int64 , error ) {
208
221
query := `
209
- SELECT SUM(size) FROM item WHERE api_ref->>'project_key' = $1
222
+ SELECT SUM(size) FROM item WHERE api_ref->>'project_key' = $1
210
223
`
211
224
size , err := db .SelectInt (query , projectKey )
212
225
if err != nil {
@@ -223,15 +236,15 @@ type Stat struct {
223
236
224
237
func CountItems (db gorp.SqlExecutor ) (res []Stat , err error ) {
225
238
_ , err = db .Select (& res , `
226
- SELECT status, type, count(status) as "number"
239
+ SELECT status, type, count(status) as "number"
227
240
FROM item
228
241
GROUP BY status, type` )
229
242
return res , sdk .WithStack (err )
230
243
}
231
244
232
245
func CountItemsToDelete (db gorp.SqlExecutor ) (int64 , error ) {
233
246
query := `SELECT count(1) as "number"
234
- FROM item
247
+ FROM item
235
248
WHERE to_delete = true`
236
249
nb , err := db .SelectInt (query )
237
250
return nb , sdk .WithStack (err )
@@ -334,5 +347,4 @@ func LoadRunResultByRunID(ctx context.Context, m *gorpmapper.Mapper, db gorp.Sql
334
347
SELECT * FROM item WHERE id IN (SELECT id FROM deduplication)
335
348
` ).Args (runID , sdk .CDNTypeItemRunResult )
336
349
return getItems (ctx , m , db , query )
337
-
338
350
}
0 commit comments