mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Error reliably on invalid filter (#3428)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user