mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 20:34:37 +03:00
Separate graphql API from rest of the system (#2503)
* Move graphql generated files to api * Refactor identify options * Remove models.StashBoxes * Move ScraperSource to scraper package * Rename field strategy enums * Rename identify.TaskOptions to Options
This commit is contained in:
183
pkg/models/resolution.go
Normal file
183
pkg/models/resolution.go
Normal file
@@ -0,0 +1,183 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type ResolutionRange struct {
|
||||
min, max int
|
||||
}
|
||||
|
||||
var resolutionRanges = map[ResolutionEnum]ResolutionRange{
|
||||
ResolutionEnum("VERY_LOW"): {144, 239},
|
||||
ResolutionEnum("LOW"): {240, 359},
|
||||
ResolutionEnum("R360P"): {360, 479},
|
||||
ResolutionEnum("STANDARD"): {480, 539},
|
||||
ResolutionEnum("WEB_HD"): {540, 719},
|
||||
ResolutionEnum("STANDARD_HD"): {720, 1079},
|
||||
ResolutionEnum("FULL_HD"): {1080, 1439},
|
||||
ResolutionEnum("QUAD_HD"): {1440, 1919},
|
||||
ResolutionEnum("VR_HD"): {1920, 2159},
|
||||
ResolutionEnum("FOUR_K"): {2160, 2879},
|
||||
ResolutionEnum("FIVE_K"): {2880, 3383},
|
||||
ResolutionEnum("SIX_K"): {3384, 4319},
|
||||
ResolutionEnum("EIGHT_K"): {4320, 8639},
|
||||
}
|
||||
|
||||
type ResolutionEnum string
|
||||
|
||||
const (
|
||||
// 144p
|
||||
ResolutionEnumVeryLow ResolutionEnum = "VERY_LOW"
|
||||
// 240p
|
||||
ResolutionEnumLow ResolutionEnum = "LOW"
|
||||
// 360p
|
||||
ResolutionEnumR360p ResolutionEnum = "R360P"
|
||||
// 480p
|
||||
ResolutionEnumStandard ResolutionEnum = "STANDARD"
|
||||
// 540p
|
||||
ResolutionEnumWebHd ResolutionEnum = "WEB_HD"
|
||||
// 720p
|
||||
ResolutionEnumStandardHd ResolutionEnum = "STANDARD_HD"
|
||||
// 1080p
|
||||
ResolutionEnumFullHd ResolutionEnum = "FULL_HD"
|
||||
// 1440p
|
||||
ResolutionEnumQuadHd ResolutionEnum = "QUAD_HD"
|
||||
// 1920p
|
||||
ResolutionEnumVrHd ResolutionEnum = "VR_HD"
|
||||
// 4k
|
||||
ResolutionEnumFourK ResolutionEnum = "FOUR_K"
|
||||
// 5k
|
||||
ResolutionEnumFiveK ResolutionEnum = "FIVE_K"
|
||||
// 6k
|
||||
ResolutionEnumSixK ResolutionEnum = "SIX_K"
|
||||
// 8k
|
||||
ResolutionEnumEightK ResolutionEnum = "EIGHT_K"
|
||||
)
|
||||
|
||||
var AllResolutionEnum = []ResolutionEnum{
|
||||
ResolutionEnumVeryLow,
|
||||
ResolutionEnumLow,
|
||||
ResolutionEnumR360p,
|
||||
ResolutionEnumStandard,
|
||||
ResolutionEnumWebHd,
|
||||
ResolutionEnumStandardHd,
|
||||
ResolutionEnumFullHd,
|
||||
ResolutionEnumQuadHd,
|
||||
ResolutionEnumVrHd,
|
||||
ResolutionEnumFourK,
|
||||
ResolutionEnumFiveK,
|
||||
ResolutionEnumSixK,
|
||||
ResolutionEnumEightK,
|
||||
}
|
||||
|
||||
func (e ResolutionEnum) IsValid() bool {
|
||||
switch e {
|
||||
case ResolutionEnumVeryLow, ResolutionEnumLow, ResolutionEnumR360p, ResolutionEnumStandard, ResolutionEnumWebHd, ResolutionEnumStandardHd, ResolutionEnumFullHd, ResolutionEnumQuadHd, ResolutionEnumVrHd, ResolutionEnumFourK, ResolutionEnumFiveK, ResolutionEnumSixK, ResolutionEnumEightK:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (e ResolutionEnum) String() string {
|
||||
return string(e)
|
||||
}
|
||||
|
||||
func (e *ResolutionEnum) UnmarshalGQL(v interface{}) error {
|
||||
str, ok := v.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("enums must be strings")
|
||||
}
|
||||
|
||||
*e = ResolutionEnum(str)
|
||||
if !e.IsValid() {
|
||||
return fmt.Errorf("%s is not a valid ResolutionEnum", str)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e ResolutionEnum) MarshalGQL(w io.Writer) {
|
||||
fmt.Fprint(w, strconv.Quote(e.String()))
|
||||
}
|
||||
|
||||
// GetMaxResolution returns the maximum width or height that media must be
|
||||
// to qualify as this resolution.
|
||||
func (e *ResolutionEnum) GetMaxResolution() int {
|
||||
return resolutionRanges[*e].max
|
||||
}
|
||||
|
||||
// GetMinResolution returns the minimum width or height that media must be
|
||||
// to qualify as this resolution.
|
||||
func (e *ResolutionEnum) GetMinResolution() int {
|
||||
return resolutionRanges[*e].min
|
||||
}
|
||||
|
||||
type StreamingResolutionEnum string
|
||||
|
||||
const (
|
||||
// 240p
|
||||
StreamingResolutionEnumLow StreamingResolutionEnum = "LOW"
|
||||
// 480p
|
||||
StreamingResolutionEnumStandard StreamingResolutionEnum = "STANDARD"
|
||||
// 720p
|
||||
StreamingResolutionEnumStandardHd StreamingResolutionEnum = "STANDARD_HD"
|
||||
// 1080p
|
||||
StreamingResolutionEnumFullHd StreamingResolutionEnum = "FULL_HD"
|
||||
// 4k
|
||||
StreamingResolutionEnumFourK StreamingResolutionEnum = "FOUR_K"
|
||||
// Original
|
||||
StreamingResolutionEnumOriginal StreamingResolutionEnum = "ORIGINAL"
|
||||
)
|
||||
|
||||
var AllStreamingResolutionEnum = []StreamingResolutionEnum{
|
||||
StreamingResolutionEnumLow,
|
||||
StreamingResolutionEnumStandard,
|
||||
StreamingResolutionEnumStandardHd,
|
||||
StreamingResolutionEnumFullHd,
|
||||
StreamingResolutionEnumFourK,
|
||||
StreamingResolutionEnumOriginal,
|
||||
}
|
||||
|
||||
func (e StreamingResolutionEnum) IsValid() bool {
|
||||
switch e {
|
||||
case StreamingResolutionEnumLow, StreamingResolutionEnumStandard, StreamingResolutionEnumStandardHd, StreamingResolutionEnumFullHd, StreamingResolutionEnumFourK, StreamingResolutionEnumOriginal:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (e StreamingResolutionEnum) String() string {
|
||||
return string(e)
|
||||
}
|
||||
|
||||
func (e *StreamingResolutionEnum) UnmarshalGQL(v interface{}) error {
|
||||
str, ok := v.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("enums must be strings")
|
||||
}
|
||||
|
||||
*e = StreamingResolutionEnum(str)
|
||||
if !e.IsValid() {
|
||||
return fmt.Errorf("%s is not a valid StreamingResolutionEnum", str)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e StreamingResolutionEnum) MarshalGQL(w io.Writer) {
|
||||
fmt.Fprint(w, strconv.Quote(e.String()))
|
||||
}
|
||||
|
||||
var streamingResolutionMax = map[StreamingResolutionEnum]int{
|
||||
StreamingResolutionEnumLow: resolutionRanges[ResolutionEnumLow].min,
|
||||
StreamingResolutionEnumStandard: resolutionRanges[ResolutionEnumStandard].min,
|
||||
StreamingResolutionEnumStandardHd: resolutionRanges[ResolutionEnumStandardHd].min,
|
||||
StreamingResolutionEnumFullHd: resolutionRanges[ResolutionEnumFullHd].min,
|
||||
StreamingResolutionEnumFourK: resolutionRanges[ResolutionEnumFourK].min,
|
||||
StreamingResolutionEnumOriginal: 0,
|
||||
}
|
||||
|
||||
func (e StreamingResolutionEnum) GetMaxResolution() int {
|
||||
return streamingResolutionMax[e]
|
||||
}
|
||||
Reference in New Issue
Block a user