Fixes gender-mapping with StashBox (#2992)

This commit is contained in:
JackDawson94
2022-10-11 00:40:14 +02:00
committed by GitHub
parent 90fdc6b322
commit b1193227d0
3 changed files with 300 additions and 237 deletions

View File

@@ -55,8 +55,10 @@ type Query struct {
Me *User "json:\"me\" graphql:\"me\"" Me *User "json:\"me\" graphql:\"me\""
SearchPerformer []*Performer "json:\"searchPerformer\" graphql:\"searchPerformer\"" SearchPerformer []*Performer "json:\"searchPerformer\" graphql:\"searchPerformer\""
SearchScene []*Scene "json:\"searchScene\" graphql:\"searchScene\"" SearchScene []*Scene "json:\"searchScene\" graphql:\"searchScene\""
SearchTag []*Tag "json:\"searchTag\" graphql:\"searchTag\""
FindDraft *Draft "json:\"findDraft\" graphql:\"findDraft\"" FindDraft *Draft "json:\"findDraft\" graphql:\"findDraft\""
FindDrafts []*Draft "json:\"findDrafts\" graphql:\"findDrafts\"" FindDrafts []*Draft "json:\"findDrafts\" graphql:\"findDrafts\""
QueryExistingScene QueryExistingSceneResult "json:\"queryExistingScene\" graphql:\"queryExistingScene\""
Version Version "json:\"version\" graphql:\"version\"" Version Version "json:\"version\" graphql:\"version\""
GetConfig StashBoxConfig "json:\"getConfig\" graphql:\"getConfig\"" GetConfig StashBoxConfig "json:\"getConfig\" graphql:\"getConfig\""
} }
@@ -235,72 +237,6 @@ const FindSceneByFingerprintDocument = `query FindSceneByFingerprint ($fingerpri
... SceneFragment ... SceneFragment
} }
} }
fragment URLFragment on URL {
url
type
}
fragment ImageFragment on Image {
id
url
width
height
}
fragment TagFragment on Tag {
name
id
}
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
}
fragment FingerprintFragment on Fingerprint {
algorithm
hash
duration
}
fragment SceneFragment on Scene {
id
title
details
duration
date
urls {
... URLFragment
}
images {
... ImageFragment
}
studio {
... StudioFragment
}
tags {
... TagFragment
}
performers {
... PerformerAppearanceFragment
}
fingerprints {
... FingerprintFragment
}
}
fragment StudioFragment on Studio {
name
id
urls {
... URLFragment
}
images {
... ImageFragment
}
}
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
fragment PerformerFragment on Performer { fragment PerformerFragment on Performer {
id id
name name
@@ -335,14 +271,80 @@ fragment PerformerFragment on Performer {
... BodyModificationFragment ... BodyModificationFragment
} }
} }
fragment FingerprintFragment on Fingerprint {
algorithm
hash
duration
}
fragment SceneFragment on Scene {
id
title
details
duration
date
urls {
... URLFragment
}
images {
... ImageFragment
}
studio {
... StudioFragment
}
tags {
... TagFragment
}
performers {
... PerformerAppearanceFragment
}
fingerprints {
... FingerprintFragment
}
}
fragment URLFragment on URL {
url
type
}
fragment TagFragment on Tag {
name
id
}
fragment FuzzyDateFragment on FuzzyDate { fragment FuzzyDateFragment on FuzzyDate {
date date
accuracy accuracy
} }
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
}
fragment BodyModificationFragment on BodyModification { fragment BodyModificationFragment on BodyModification {
location location
description description
} }
fragment ImageFragment on Image {
id
url
width
height
}
fragment StudioFragment on Studio {
name
id
urls {
... URLFragment
}
images {
... ImageFragment
}
}
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
` `
func (c *Client) FindSceneByFingerprint(ctx context.Context, fingerprint FingerprintQueryInput, httpRequestOptions ...client.HTTPRequestOption) (*FindSceneByFingerprint, error) { func (c *Client) FindSceneByFingerprint(ctx context.Context, fingerprint FingerprintQueryInput, httpRequestOptions ...client.HTTPRequestOption) (*FindSceneByFingerprint, error) {
@@ -363,70 +365,10 @@ const FindScenesByFullFingerprintsDocument = `query FindScenesByFullFingerprints
... SceneFragment ... SceneFragment
} }
} }
fragment SceneFragment on Scene {
id
title
details
duration
date
urls {
... URLFragment
}
images {
... ImageFragment
}
studio {
... StudioFragment
}
tags {
... TagFragment
}
performers {
... PerformerAppearanceFragment
}
fingerprints {
... FingerprintFragment
}
}
fragment URLFragment on URL { fragment URLFragment on URL {
url url
type type
} }
fragment StudioFragment on Studio {
name
id
urls {
... URLFragment
}
images {
... ImageFragment
}
}
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
fragment BodyModificationFragment on BodyModification {
location
description
}
fragment FingerprintFragment on Fingerprint {
algorithm
hash
duration
}
fragment ImageFragment on Image {
id
url
width
height
}
fragment TagFragment on Tag {
name
id
}
fragment PerformerFragment on Performer { fragment PerformerFragment on Performer {
id id
name name
@@ -461,6 +403,56 @@ fragment PerformerFragment on Performer {
... BodyModificationFragment ... BodyModificationFragment
} }
} }
fragment FingerprintFragment on Fingerprint {
algorithm
hash
duration
}
fragment SceneFragment on Scene {
id
title
details
duration
date
urls {
... URLFragment
}
images {
... ImageFragment
}
studio {
... StudioFragment
}
tags {
... TagFragment
}
performers {
... PerformerAppearanceFragment
}
fingerprints {
... FingerprintFragment
}
}
fragment StudioFragment on Studio {
name
id
urls {
... URLFragment
}
images {
... ImageFragment
}
}
fragment TagFragment on Tag {
name
id
}
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
fragment FuzzyDateFragment on FuzzyDate { fragment FuzzyDateFragment on FuzzyDate {
date date
accuracy accuracy
@@ -471,6 +463,16 @@ fragment MeasurementsFragment on Measurements {
waist waist
hip hip
} }
fragment BodyModificationFragment on BodyModification {
location
description
}
fragment ImageFragment on Image {
id
url
width
height
}
` `
func (c *Client) FindScenesByFullFingerprints(ctx context.Context, fingerprints []*FingerprintQueryInput, httpRequestOptions ...client.HTTPRequestOption) (*FindScenesByFullFingerprints, error) { func (c *Client) FindScenesByFullFingerprints(ctx context.Context, fingerprints []*FingerprintQueryInput, httpRequestOptions ...client.HTTPRequestOption) (*FindScenesByFullFingerprints, error) {
@@ -491,9 +493,30 @@ const FindScenesBySceneFingerprintsDocument = `query FindScenesBySceneFingerprin
... SceneFragment ... SceneFragment
} }
} }
fragment URLFragment on URL { fragment SceneFragment on Scene {
url id
type title
details
duration
date
urls {
... URLFragment
}
images {
... ImageFragment
}
studio {
... StudioFragment
}
tags {
... TagFragment
}
performers {
... PerformerAppearanceFragment
}
fingerprints {
... FingerprintFragment
}
} }
fragment ImageFragment on Image { fragment ImageFragment on Image {
id id
@@ -545,41 +568,14 @@ fragment PerformerFragment on Performer {
... BodyModificationFragment ... BodyModificationFragment
} }
} }
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
}
fragment FingerprintFragment on Fingerprint { fragment FingerprintFragment on Fingerprint {
algorithm algorithm
hash hash
duration duration
} }
fragment SceneFragment on Scene { fragment URLFragment on URL {
id url
title type
details
duration
date
urls {
... URLFragment
}
images {
... ImageFragment
}
studio {
... StudioFragment
}
tags {
... TagFragment
}
performers {
... PerformerAppearanceFragment
}
fingerprints {
... FingerprintFragment
}
} }
fragment TagFragment on Tag { fragment TagFragment on Tag {
name name
@@ -595,6 +591,12 @@ fragment FuzzyDateFragment on FuzzyDate {
date date
accuracy accuracy
} }
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
}
fragment BodyModificationFragment on BodyModification { fragment BodyModificationFragment on BodyModification {
location location
description description
@@ -619,6 +621,10 @@ const SearchSceneDocument = `query SearchScene ($term: String!) {
... SceneFragment ... SceneFragment
} }
} }
fragment FuzzyDateFragment on FuzzyDate {
date
accuracy
}
fragment SceneFragment on Scene { fragment SceneFragment on Scene {
id id
title title
@@ -644,10 +650,6 @@ fragment SceneFragment on Scene {
... FingerprintFragment ... FingerprintFragment
} }
} }
fragment URLFragment on URL {
url
type
}
fragment ImageFragment on Image { fragment ImageFragment on Image {
id id
url url
@@ -658,6 +660,35 @@ fragment TagFragment on Tag {
name name
id id
} }
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
fragment BodyModificationFragment on BodyModification {
location
description
}
fragment FingerprintFragment on Fingerprint {
algorithm
hash
duration
}
fragment URLFragment on URL {
url
type
}
fragment StudioFragment on Studio {
name
id
urls {
... URLFragment
}
images {
... ImageFragment
}
}
fragment PerformerFragment on Performer { fragment PerformerFragment on Performer {
id id
name name
@@ -692,41 +723,12 @@ fragment PerformerFragment on Performer {
... BodyModificationFragment ... BodyModificationFragment
} }
} }
fragment FuzzyDateFragment on FuzzyDate {
date
accuracy
}
fragment FingerprintFragment on Fingerprint {
algorithm
hash
duration
}
fragment StudioFragment on Studio {
name
id
urls {
... URLFragment
}
images {
... ImageFragment
}
}
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
fragment MeasurementsFragment on Measurements { fragment MeasurementsFragment on Measurements {
band_size band_size
cup_size cup_size
waist waist
hip hip
} }
fragment BodyModificationFragment on BodyModification {
location
description
}
` `
func (c *Client) SearchScene(ctx context.Context, term string, httpRequestOptions ...client.HTTPRequestOption) (*SearchScene, error) { func (c *Client) SearchScene(ctx context.Context, term string, httpRequestOptions ...client.HTTPRequestOption) (*SearchScene, error) {
@@ -825,6 +827,16 @@ const FindPerformerByIDDocument = `query FindPerformerByID ($id: ID!) {
... PerformerFragment ... PerformerFragment
} }
} }
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
}
fragment BodyModificationFragment on BodyModification {
location
description
}
fragment PerformerFragment on Performer { fragment PerformerFragment on Performer {
id id
name name
@@ -873,16 +885,6 @@ fragment FuzzyDateFragment on FuzzyDate {
date date
accuracy accuracy
} }
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
}
fragment BodyModificationFragment on BodyModification {
location
description
}
` `
func (c *Client) FindPerformerByID(ctx context.Context, id string, httpRequestOptions ...client.HTTPRequestOption) (*FindPerformerByID, error) { func (c *Client) FindPerformerByID(ctx context.Context, id string, httpRequestOptions ...client.HTTPRequestOption) (*FindPerformerByID, error) {
@@ -907,20 +909,32 @@ fragment BodyModificationFragment on BodyModification {
location location
description description
} }
fragment URLFragment on URL {
url
type
}
fragment ImageFragment on Image { fragment ImageFragment on Image {
id id
url url
width width
height height
} }
fragment FuzzyDateFragment on FuzzyDate {
date
accuracy
}
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
}
fragment TagFragment on Tag { fragment TagFragment on Tag {
name name
id id
} }
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
fragment PerformerFragment on Performer { fragment PerformerFragment on Performer {
id id
name name
@@ -955,15 +969,10 @@ fragment PerformerFragment on Performer {
... BodyModificationFragment ... BodyModificationFragment
} }
} }
fragment FuzzyDateFragment on FuzzyDate { fragment FingerprintFragment on Fingerprint {
date algorithm
accuracy hash
} duration
fragment MeasurementsFragment on Measurements {
band_size
cup_size
waist
hip
} }
fragment SceneFragment on Scene { fragment SceneFragment on Scene {
id id
@@ -990,6 +999,10 @@ fragment SceneFragment on Scene {
... FingerprintFragment ... FingerprintFragment
} }
} }
fragment URLFragment on URL {
url
type
}
fragment StudioFragment on Studio { fragment StudioFragment on Studio {
name name
id id
@@ -1000,17 +1013,6 @@ fragment StudioFragment on Studio {
... ImageFragment ... ImageFragment
} }
} }
fragment PerformerAppearanceFragment on PerformerAppearance {
as
performer {
... PerformerFragment
}
}
fragment FingerprintFragment on Fingerprint {
algorithm
hash
duration
}
` `
func (c *Client) FindSceneByID(ctx context.Context, id string, httpRequestOptions ...client.HTTPRequestOption) (*FindSceneByID, error) { func (c *Client) FindSceneByID(ctx context.Context, id string, httpRequestOptions ...client.HTTPRequestOption) (*FindSceneByID, error) {

View File

@@ -88,9 +88,9 @@ type DraftEntity struct {
ID *string `json:"id,omitempty"` ID *string `json:"id,omitempty"`
} }
func (DraftEntity) IsSceneDraftPerformer() {}
func (DraftEntity) IsSceneDraftStudio() {} func (DraftEntity) IsSceneDraftStudio() {}
func (DraftEntity) IsSceneDraftTag() {} func (DraftEntity) IsSceneDraftTag() {}
func (DraftEntity) IsSceneDraftPerformer() {}
type DraftEntityInput struct { type DraftEntityInput struct {
Name string `json:"name"` Name string `json:"name"`
@@ -583,6 +583,17 @@ type QueryEditsResultType struct {
Edits []*Edit `json:"edits,omitempty"` Edits []*Edit `json:"edits,omitempty"`
} }
type QueryExistingSceneInput struct {
Title *string `json:"title,omitempty"`
StudioID *string `json:"studio_id,omitempty"`
Fingerprints []*FingerprintInput `json:"fingerprints,omitempty"`
}
type QueryExistingSceneResult struct {
Edits []*Edit `json:"edits,omitempty"`
Scenes []*Scene `json:"scenes,omitempty"`
}
type QueryPerformersResultType struct { type QueryPerformersResultType struct {
Count int `json:"count"` Count int `json:"count"`
Performers []*Performer `json:"performers,omitempty"` Performers []*Performer `json:"performers,omitempty"`
@@ -738,7 +749,6 @@ type SceneEditInput struct {
Edit *EditInput `json:"edit,omitempty"` Edit *EditInput `json:"edit,omitempty"`
// Not required for destroy type // Not required for destroy type
Details *SceneEditDetailsInput `json:"details,omitempty"` Details *SceneEditDetailsInput `json:"details,omitempty"`
Duration *int `json:"duration,omitempty"`
} }
type SceneQueryInput struct { type SceneQueryInput struct {
@@ -762,6 +772,8 @@ type SceneQueryInput struct {
Alias *StringCriterionInput `json:"alias,omitempty"` Alias *StringCriterionInput `json:"alias,omitempty"`
// Filter to only include scenes with these fingerprints // Filter to only include scenes with these fingerprints
Fingerprints *MultiStringCriterionInput `json:"fingerprints,omitempty"` Fingerprints *MultiStringCriterionInput `json:"fingerprints,omitempty"`
// Filter by favorited entity
Favorites *FavoriteFilter `json:"favorites,omitempty"`
Page int `json:"page"` Page int `json:"page"`
PerPage int `json:"per_page"` PerPage int `json:"per_page"`
Direction SortDirectionEnum `json:"direction"` Direction SortDirectionEnum `json:"direction"`
@@ -846,8 +858,8 @@ type Studio struct {
Updated time.Time `json:"updated"` Updated time.Time `json:"updated"`
} }
func (Studio) IsEditTarget() {}
func (Studio) IsSceneDraftStudio() {} func (Studio) IsSceneDraftStudio() {}
func (Studio) IsEditTarget() {}
type StudioCreateInput struct { type StudioCreateInput struct {
Name string `json:"name"` Name string `json:"name"`
@@ -924,8 +936,8 @@ type Tag struct {
Updated time.Time `json:"updated"` Updated time.Time `json:"updated"`
} }
func (Tag) IsEditTarget() {}
func (Tag) IsSceneDraftTag() {} func (Tag) IsSceneDraftTag() {}
func (Tag) IsEditTarget() {}
type TagCategory struct { type TagCategory struct {
ID string `json:"id"` ID string `json:"id"`
@@ -1467,6 +1479,49 @@ func (e EyeColorEnum) MarshalGQL(w io.Writer) {
fmt.Fprint(w, strconv.Quote(e.String())) fmt.Fprint(w, strconv.Quote(e.String()))
} }
type FavoriteFilter string
const (
FavoriteFilterPerformer FavoriteFilter = "PERFORMER"
FavoriteFilterStudio FavoriteFilter = "STUDIO"
FavoriteFilterAll FavoriteFilter = "ALL"
)
var AllFavoriteFilter = []FavoriteFilter{
FavoriteFilterPerformer,
FavoriteFilterStudio,
FavoriteFilterAll,
}
func (e FavoriteFilter) IsValid() bool {
switch e {
case FavoriteFilterPerformer, FavoriteFilterStudio, FavoriteFilterAll:
return true
}
return false
}
func (e FavoriteFilter) String() string {
return string(e)
}
func (e *FavoriteFilter) UnmarshalGQL(v interface{}) error {
str, ok := v.(string)
if !ok {
return fmt.Errorf("enums must be strings")
}
*e = FavoriteFilter(str)
if !e.IsValid() {
return fmt.Errorf("%s is not a valid FavoriteFilter", str)
}
return nil
}
func (e FavoriteFilter) MarshalGQL(w io.Writer) {
fmt.Fprint(w, strconv.Quote(e.String()))
}
type FingerprintAlgorithm string type FingerprintAlgorithm string
const ( const (
@@ -1518,6 +1573,7 @@ const (
GenderEnumTransgenderMale GenderEnum = "TRANSGENDER_MALE" GenderEnumTransgenderMale GenderEnum = "TRANSGENDER_MALE"
GenderEnumTransgenderFemale GenderEnum = "TRANSGENDER_FEMALE" GenderEnumTransgenderFemale GenderEnum = "TRANSGENDER_FEMALE"
GenderEnumIntersex GenderEnum = "INTERSEX" GenderEnumIntersex GenderEnum = "INTERSEX"
GenderEnumNonBinary GenderEnum = "NON_BINARY"
) )
var AllGenderEnum = []GenderEnum{ var AllGenderEnum = []GenderEnum{
@@ -1526,11 +1582,12 @@ var AllGenderEnum = []GenderEnum{
GenderEnumTransgenderMale, GenderEnumTransgenderMale,
GenderEnumTransgenderFemale, GenderEnumTransgenderFemale,
GenderEnumIntersex, GenderEnumIntersex,
GenderEnumNonBinary,
} }
func (e GenderEnum) IsValid() bool { func (e GenderEnum) IsValid() bool {
switch e { switch e {
case GenderEnumMale, GenderEnumFemale, GenderEnumTransgenderMale, GenderEnumTransgenderFemale, GenderEnumIntersex: case GenderEnumMale, GenderEnumFemale, GenderEnumTransgenderMale, GenderEnumTransgenderFemale, GenderEnumIntersex, GenderEnumNonBinary:
return true return true
} }
return false return false
@@ -1566,6 +1623,7 @@ const (
GenderFilterEnumTransgenderMale GenderFilterEnum = "TRANSGENDER_MALE" GenderFilterEnumTransgenderMale GenderFilterEnum = "TRANSGENDER_MALE"
GenderFilterEnumTransgenderFemale GenderFilterEnum = "TRANSGENDER_FEMALE" GenderFilterEnumTransgenderFemale GenderFilterEnum = "TRANSGENDER_FEMALE"
GenderFilterEnumIntersex GenderFilterEnum = "INTERSEX" GenderFilterEnumIntersex GenderFilterEnum = "INTERSEX"
GenderFilterEnumNonBinary GenderFilterEnum = "NON_BINARY"
) )
var AllGenderFilterEnum = []GenderFilterEnum{ var AllGenderFilterEnum = []GenderFilterEnum{
@@ -1575,11 +1633,12 @@ var AllGenderFilterEnum = []GenderFilterEnum{
GenderFilterEnumTransgenderMale, GenderFilterEnumTransgenderMale,
GenderFilterEnumTransgenderFemale, GenderFilterEnumTransgenderFemale,
GenderFilterEnumIntersex, GenderFilterEnumIntersex,
GenderFilterEnumNonBinary,
} }
func (e GenderFilterEnum) IsValid() bool { func (e GenderFilterEnum) IsValid() bool {
switch e { switch e {
case GenderFilterEnumUnknown, GenderFilterEnumMale, GenderFilterEnumFemale, GenderFilterEnumTransgenderMale, GenderFilterEnumTransgenderFemale, GenderFilterEnumIntersex: case GenderFilterEnumUnknown, GenderFilterEnumMale, GenderFilterEnumFemale, GenderFilterEnumTransgenderMale, GenderFilterEnumTransgenderFemale, GenderFilterEnumIntersex, GenderFilterEnumNonBinary:
return true return true
} }
return false return false

View File

@@ -491,6 +491,8 @@ func translateGender(gender *graphql.GenderEnum) *string {
res = models.GenderEnumTransgenderFemale res = models.GenderEnumTransgenderFemale
case graphql.GenderEnumTransgenderMale: case graphql.GenderEnumTransgenderMale:
res = models.GenderEnumTransgenderMale res = models.GenderEnumTransgenderMale
case graphql.GenderEnumNonBinary:
res = models.GenderEnumNonBinary
} }
if res != "" { if res != "" {