mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 16:34:02 +01:00
Error reliably on invalid filter (#3428)
This commit is contained in:
parent
ca38a355d2
commit
83cb51ec47
10 changed files with 31 additions and 23 deletions
|
|
@ -823,7 +823,9 @@ func (qb *FileStore) Query(ctx context.Context, options models.FileQueryOptions)
|
||||||
}
|
}
|
||||||
filter := qb.makeFilter(ctx, fileFilter)
|
filter := qb.makeFilter(ctx, fileFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
qb.setQuerySort(&query, findFilter)
|
qb.setQuerySort(&query, findFilter)
|
||||||
query.sortAndPagination += getPagination(findFilter)
|
query.sortAndPagination += getPagination(findFilter)
|
||||||
|
|
|
||||||
|
|
@ -736,7 +736,9 @@ func (qb *GalleryStore) makeQuery(ctx context.Context, galleryFilter *models.Gal
|
||||||
}
|
}
|
||||||
filter := qb.makeFilter(ctx, galleryFilter)
|
filter := qb.makeFilter(ctx, galleryFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
qb.setGallerySort(&query, findFilter)
|
qb.setGallerySort(&query, findFilter)
|
||||||
query.sortAndPagination += getPagination(findFilter)
|
query.sortAndPagination += getPagination(findFilter)
|
||||||
|
|
|
||||||
|
|
@ -728,7 +728,9 @@ func (qb *ImageStore) makeQuery(ctx context.Context, imageFilter *models.ImageFi
|
||||||
}
|
}
|
||||||
filter := qb.makeFilter(ctx, imageFilter)
|
filter := qb.makeFilter(ctx, imageFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
qb.setImageSortAndPagination(&query, findFilter)
|
qb.setImageSortAndPagination(&query, findFilter)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,9 @@ func (qb *movieQueryBuilder) Query(ctx context.Context, movieFilter *models.Movi
|
||||||
|
|
||||||
filter := qb.makeFilter(ctx, movieFilter)
|
filter := qb.makeFilter(ctx, movieFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
query.sortAndPagination = qb.getMovieSort(findFilter) + getPagination(findFilter)
|
query.sortAndPagination = qb.getMovieSort(findFilter) + getPagination(findFilter)
|
||||||
idsResult, countResult, err := query.executeFind(ctx)
|
idsResult, countResult, err := query.executeFind(ctx)
|
||||||
|
|
|
||||||
|
|
@ -639,7 +639,9 @@ func (qb *PerformerStore) makeQuery(ctx context.Context, performerFilter *models
|
||||||
}
|
}
|
||||||
filter := qb.makeFilter(ctx, performerFilter)
|
filter := qb.makeFilter(ctx, performerFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
query.sortAndPagination = qb.getPerformerSort(findFilter) + getPagination(findFilter)
|
query.sortAndPagination = qb.getPerformerSort(findFilter) + getPagination(findFilter)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,6 @@ type queryBuilder struct {
|
||||||
recursiveWith bool
|
recursiveWith bool
|
||||||
|
|
||||||
sortAndPagination string
|
sortAndPagination string
|
||||||
|
|
||||||
err error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (qb queryBuilder) body() string {
|
func (qb queryBuilder) body() string {
|
||||||
|
|
@ -61,20 +59,11 @@ func (qb queryBuilder) findIDs(ctx context.Context) ([]int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (qb queryBuilder) executeFind(ctx context.Context) ([]int, int, error) {
|
func (qb queryBuilder) executeFind(ctx context.Context) ([]int, int, error) {
|
||||||
if qb.err != nil {
|
|
||||||
return nil, 0, qb.err
|
|
||||||
}
|
|
||||||
|
|
||||||
body := qb.body()
|
body := qb.body()
|
||||||
|
|
||||||
return qb.repository.executeFindQuery(ctx, body, qb.args, qb.sortAndPagination, qb.whereClauses, qb.havingClauses, qb.withClauses, qb.recursiveWith)
|
return qb.repository.executeFindQuery(ctx, body, qb.args, qb.sortAndPagination, qb.whereClauses, qb.havingClauses, qb.withClauses, qb.recursiveWith)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (qb queryBuilder) executeCount(ctx context.Context) (int, error) {
|
func (qb queryBuilder) executeCount(ctx context.Context) (int, error) {
|
||||||
if qb.err != nil {
|
|
||||||
return 0, qb.err
|
|
||||||
}
|
|
||||||
|
|
||||||
body := qb.body()
|
body := qb.body()
|
||||||
|
|
||||||
withClause := ""
|
withClause := ""
|
||||||
|
|
@ -136,11 +125,10 @@ func (qb *queryBuilder) addJoins(joins ...join) {
|
||||||
qb.joins.add(joins...)
|
qb.joins.add(joins...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (qb *queryBuilder) addFilter(f *filterBuilder) {
|
func (qb *queryBuilder) addFilter(f *filterBuilder) error {
|
||||||
err := f.getError()
|
err := f.getError()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
qb.err = err
|
return err
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clause, args := f.generateWithClauses()
|
clause, args := f.generateWithClauses()
|
||||||
|
|
@ -172,6 +160,8 @@ func (qb *queryBuilder) addFilter(f *filterBuilder) {
|
||||||
}
|
}
|
||||||
|
|
||||||
qb.addJoins(f.getAllJoins()...)
|
qb.addJoins(f.getAllJoins()...)
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (qb *queryBuilder) parseQueryString(columns []string, q string) {
|
func (qb *queryBuilder) parseQueryString(columns []string, q string) {
|
||||||
|
|
|
||||||
|
|
@ -990,7 +990,9 @@ func (qb *SceneStore) Query(ctx context.Context, options models.SceneQueryOption
|
||||||
}
|
}
|
||||||
filter := qb.makeFilter(ctx, sceneFilter)
|
filter := qb.makeFilter(ctx, sceneFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
qb.setSceneSort(&query, findFilter)
|
qb.setSceneSort(&query, findFilter)
|
||||||
query.sortAndPagination += getPagination(findFilter)
|
query.sortAndPagination += getPagination(findFilter)
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,9 @@ func (qb *sceneMarkerQueryBuilder) Query(ctx context.Context, sceneMarkerFilter
|
||||||
|
|
||||||
filter := qb.makeFilter(ctx, sceneMarkerFilter)
|
filter := qb.makeFilter(ctx, sceneMarkerFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
query.sortAndPagination = qb.getSceneMarkerSort(&query, findFilter) + getPagination(findFilter)
|
query.sortAndPagination = qb.getSceneMarkerSort(&query, findFilter) + getPagination(findFilter)
|
||||||
idsResult, countResult, err := query.executeFind(ctx)
|
idsResult, countResult, err := query.executeFind(ctx)
|
||||||
|
|
|
||||||
|
|
@ -287,7 +287,9 @@ func (qb *studioQueryBuilder) Query(ctx context.Context, studioFilter *models.St
|
||||||
}
|
}
|
||||||
filter := qb.makeFilter(ctx, studioFilter)
|
filter := qb.makeFilter(ctx, studioFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
query.sortAndPagination = qb.getStudioSort(findFilter) + getPagination(findFilter)
|
query.sortAndPagination = qb.getStudioSort(findFilter) + getPagination(findFilter)
|
||||||
idsResult, countResult, err := query.executeFind(ctx)
|
idsResult, countResult, err := query.executeFind(ctx)
|
||||||
|
|
|
||||||
|
|
@ -366,7 +366,9 @@ func (qb *tagQueryBuilder) Query(ctx context.Context, tagFilter *models.TagFilte
|
||||||
}
|
}
|
||||||
filter := qb.makeFilter(ctx, tagFilter)
|
filter := qb.makeFilter(ctx, tagFilter)
|
||||||
|
|
||||||
query.addFilter(filter)
|
if err := query.addFilter(filter); err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
query.sortAndPagination = qb.getTagSort(&query, findFilter) + getPagination(findFilter)
|
query.sortAndPagination = qb.getTagSort(&query, findFilter) + getPagination(findFilter)
|
||||||
idsResult, countResult, err := query.executeFind(ctx)
|
idsResult, countResult, err := query.executeFind(ctx)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue