Skip to content

Commit 3a900a8

Browse files
authored
Add pending scene creates to edits tabs (#925)
1 parent 2f87c16 commit 3a900a8

File tree

1 file changed

+49
-4
lines changed

1 file changed

+49
-4
lines changed

pkg/sqlx/querybuilder_edit.go

+49-4
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,10 @@ func (qb *editQueryBuilder) buildQuery(filter models.EditQueryInput, userID uuid
218218
if filter.TargetType == nil || *filter.TargetType == "" {
219219
return nil, errors.New("TargetType is required when TargetID filter is used")
220220
}
221+
jsonID, _ := json.Marshal(*targetID)
221222

222223
// Union is significantly faster than an OR query
223-
query.AddWhere(fmt.Sprintf(`
224+
whereQueryString := fmt.Sprintf(`
224225
edits.id IN (
225226
SELECT id
226227
FROM edits E
@@ -230,11 +231,55 @@ func (qb *editQueryBuilder) buildQuery(filter models.EditQueryInput, userID uuid
230231
FROM edits E
231232
JOIN %[1]s_edits TJ ON TJ.edit_id = E.id
232233
WHERE TJ.%[1]s_id = ?
234+
235+
`, strings.ToLower(filter.TargetType.String()))
236+
237+
switch *filter.TargetType {
238+
case models.TargetTypeEnumPerformer:
239+
// Add scenes with performer to performer edit query
240+
whereQueryString += `
241+
UNION
242+
SELECT id
243+
FROM edits E
244+
WHERE jsonb_path_query_array(data, '$.new_data.added_performers[*].performer_id') @> ?
245+
AND E.status = 'PENDING'
246+
AND E.target_type = 'SCENE'
247+
)
248+
`
249+
query.AddWhere(whereQueryString)
250+
query.AddArg(jsonID, *targetID, jsonID)
251+
case models.TargetTypeEnumStudio:
252+
// Add scenes with studio to studio edit query
253+
whereQueryString += `
254+
UNION
255+
SELECT id
256+
FROM edits E
257+
WHERE E.status = 'PENDING' AND
258+
E.target_type = 'SCENE' AND
259+
E.data->'new_data'->'studio_id' @> ?
260+
)
261+
`
262+
query.AddWhere(whereQueryString)
263+
query.AddArg(jsonID, *targetID, jsonID)
264+
case models.TargetTypeEnumTag:
265+
// Add scenes with tag to tag edit query
266+
whereQueryString += `
267+
UNION
268+
SELECT id
269+
FROM edits E
270+
WHERE E.status = 'PENDING' AND
271+
E.target_type = 'SCENE' AND
272+
E.data->'new_data'->'added_tags' @> ?
233273
)
234-
`, strings.ToLower(filter.TargetType.String())))
274+
`
275+
query.AddWhere(whereQueryString)
276+
query.AddArg(jsonID, *targetID, jsonID)
277+
default:
278+
whereQueryString += ")"
279+
query.AddWhere(whereQueryString)
280+
query.AddArg(jsonID, *targetID)
281+
}
235282

236-
jsonID, _ := json.Marshal(*targetID)
237-
query.AddArg(jsonID, *targetID)
238283
} else if q := filter.TargetType; q != nil && *q != "" {
239284
query.Eq("target_type", q.String())
240285
}

0 commit comments

Comments
 (0)