mirror of https://github.com/stashapp/stash.git
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
![]() |
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
|
||
|
}
|