stash/pkg/scene/query.go

51 lines
1.4 KiB
Go
Raw Normal View History

package scene
import "github.com/stashapp/stash/pkg/models"
type Queryer interface {
Query(options models.SceneQueryOptions) (*models.SceneQueryResult, error)
}
// QueryOptions returns a SceneQueryOptions populated with the provided filters.
func QueryOptions(sceneFilter *models.SceneFilterType, findFilter *models.FindFilterType, count bool) models.SceneQueryOptions {
return models.SceneQueryOptions{
QueryOptions: models.QueryOptions{
FindFilter: findFilter,
Count: count,
},
SceneFilter: sceneFilter,
}
}
// QueryWithCount queries for scenes, returning the scene objects and the total count.
func QueryWithCount(qb Queryer, sceneFilter *models.SceneFilterType, findFilter *models.FindFilterType) ([]*models.Scene, int, error) {
// this was moved from the queryBuilder code
// left here so that calling functions can reference this instead
result, err := qb.Query(QueryOptions(sceneFilter, findFilter, true))
if err != nil {
return nil, 0, err
}
scenes, err := result.Resolve()
if err != nil {
return nil, 0, err
}
return scenes, result.Count, nil
}
// Query queries for scenes using the provided filters.
func Query(qb Queryer, sceneFilter *models.SceneFilterType, findFilter *models.FindFilterType) ([]*models.Scene, error) {
result, err := qb.Query(QueryOptions(sceneFilter, findFilter, false))
if err != nil {
return nil, err
}
scenes, err := result.Resolve()
if err != nil {
return nil, err
}
return scenes, nil
}