models

package
v0.7.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2026 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UserTokenTypeNewUser         = "NEW_USER"
	UserTokenTypeResetPassword   = "RESET_PASSWORD"
	UserTokenTypeConfirmOldEmail = "CONFIRM_OLD_EMAIL"
	UserTokenTypeConfirmNewEmail = "CONFIRM_NEW_EMAIL"
)

Variables

View Source
var ErrInvalidDate = fmt.Errorf("invalid fuzzy date")

Functions

func MarshalID

func MarshalID(id uuid.UUID) graphql.Marshaler

Creates a marshaller which converts a uuid to a string

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

func UnmarshalID

func UnmarshalID(v interface{}) (uuid.UUID, error)

Unmarshalls a string to a uuid

func ValidateFuzzyString

func ValidateFuzzyString(date *string) error

Types

type ActivateNewUserInput

type ActivateNewUserInput struct {
	Name          string    `json:"name"`
	ActivationKey uuid.UUID `json:"activation_key"`
	Password      string    `json:"password"`
}

type ApplyEditInput

type ApplyEditInput struct {
	ID uuid.UUID `json:"id"`
}

type BodyModification

type BodyModification struct {
	Location    string  `json:"location"`
	Description *string `json:"description,omitempty"`
}

type BodyModificationCriterionInput

type BodyModificationCriterionInput struct {
	Location    *string           `json:"location,omitempty"`
	Description *string           `json:"description,omitempty"`
	Modifier    CriterionModifier `json:"modifier"`
}

type BodyModificationInput

type BodyModificationInput struct {
	Location    string  `json:"location"`
	Description *string `json:"description,omitempty"`
}

type BreastTypeCriterionInput

type BreastTypeCriterionInput struct {
	Value    *BreastTypeEnum   `json:"value,omitempty"`
	Modifier CriterionModifier `json:"modifier"`
}

type BreastTypeEnum

type BreastTypeEnum string
const (
	BreastTypeEnumNatural BreastTypeEnum = "NATURAL"
	BreastTypeEnumFake    BreastTypeEnum = "FAKE"
	BreastTypeEnumNa      BreastTypeEnum = "NA"
)

func (BreastTypeEnum) IsValid

func (e BreastTypeEnum) IsValid() bool

func (BreastTypeEnum) MarshalGQL

func (e BreastTypeEnum) MarshalGQL(w io.Writer)

func (BreastTypeEnum) MarshalJSON

func (e BreastTypeEnum) MarshalJSON() ([]byte, error)

func (BreastTypeEnum) String

func (e BreastTypeEnum) String() string

func (*BreastTypeEnum) UnmarshalGQL

func (e *BreastTypeEnum) UnmarshalGQL(v any) error

func (*BreastTypeEnum) UnmarshalJSON

func (e *BreastTypeEnum) UnmarshalJSON(b []byte) error

type CancelEditInput

type CancelEditInput struct {
	ID uuid.UUID `json:"id"`
}

type ChangeEmailTokenData

type ChangeEmailTokenData struct {
	UserID uuid.UUID `json:"user_id"`
	Email  string    `json:"email"`
}

type CommentCommentedEdit

type CommentCommentedEdit struct {
	Comment *EditComment `json:"comment"`
}

func (CommentCommentedEdit) IsNotificationData

func (CommentCommentedEdit) IsNotificationData()

type CommentOwnEdit

type CommentOwnEdit struct {
	Comment *EditComment `json:"comment"`
}

func (CommentOwnEdit) IsNotificationData

func (CommentOwnEdit) IsNotificationData()

type CommentVotedEdit

type CommentVotedEdit struct {
	Comment *EditComment `json:"comment"`
}

func (CommentVotedEdit) IsNotificationData

func (CommentVotedEdit) IsNotificationData()

type ComplexityRoot

type ComplexityRoot struct {
	BodyModification struct {
		Description func(childComplexity int) int
		Location    func(childComplexity int) int
	}

	CommentCommentedEdit struct {
		Comment func(childComplexity int) int
	}

	CommentOwnEdit struct {
		Comment func(childComplexity int) int
	}

	CommentVotedEdit struct {
		Comment func(childComplexity int) int
	}

	DownvoteOwnEdit struct {
		Edit func(childComplexity int) int
	}

	Draft struct {
		Created func(childComplexity int) int
		Data    func(childComplexity int) int
		Expires func(childComplexity int) int
		ID      func(childComplexity int) int
	}

	DraftEntity struct {
		ID   func(childComplexity int) int
		Name func(childComplexity int) int
	}

	DraftFingerprint struct {
		Algorithm func(childComplexity int) int
		Duration  func(childComplexity int) int
		Hash      func(childComplexity int) int
	}

	DraftSubmissionStatus struct {
		ID func(childComplexity int) int
	}

	Edit struct {
		Applied      func(childComplexity int) int
		Bot          func(childComplexity int) int
		Closed       func(childComplexity int) int
		Comments     func(childComplexity int) int
		Created      func(childComplexity int) int
		Destructive  func(childComplexity int) int
		Details      func(childComplexity int) int
		Expires      func(childComplexity int) int
		ID           func(childComplexity int) int
		MergeSources func(childComplexity int) int
		OldDetails   func(childComplexity int) int
		Operation    func(childComplexity int) int
		Options      func(childComplexity int) int
		Status       func(childComplexity int) int
		Target       func(childComplexity int) int
		TargetType   func(childComplexity int) int
		Updatable    func(childComplexity int) int
		UpdateCount  func(childComplexity int) int
		Updated      func(childComplexity int) int
		User         func(childComplexity int) int
		VoteCount    func(childComplexity int) int
		Votes        func(childComplexity int) int
	}

	EditComment struct {
		Comment func(childComplexity int) int
		Date    func(childComplexity int) int
		Edit    func(childComplexity int) int
		ID      func(childComplexity int) int
		User    func(childComplexity int) int
	}

	EditVote struct {
		Date func(childComplexity int) int
		User func(childComplexity int) int
		Vote func(childComplexity int) int
	}

	FailedOwnEdit struct {
		Edit func(childComplexity int) int
	}

	FavoritePerformerEdit struct {
		Edit func(childComplexity int) int
	}

	FavoritePerformerScene struct {
		Scene func(childComplexity int) int
	}

	FavoriteStudioEdit struct {
		Edit func(childComplexity int) int
	}

	FavoriteStudioScene struct {
		Scene func(childComplexity int) int
	}

	Fingerprint struct {
		Algorithm     func(childComplexity int) int
		Created       func(childComplexity int) int
		Duration      func(childComplexity int) int
		Hash          func(childComplexity int) int
		Reports       func(childComplexity int) int
		Submissions   func(childComplexity int) int
		Updated       func(childComplexity int) int
		UserReported  func(childComplexity int) int
		UserSubmitted func(childComplexity int) int
	}

	FingerprintedSceneEdit struct {
		Edit func(childComplexity int) int
	}

	FuzzyDate struct {
		Accuracy func(childComplexity int) int
		Date     func(childComplexity int) int
	}

	Image struct {
		Height func(childComplexity int) int
		ID     func(childComplexity int) int
		URL    func(childComplexity int) int
		Width  func(childComplexity int) int
	}

	InviteKey struct {
		Expires func(childComplexity int) int
		ID      func(childComplexity int) int
		Uses    func(childComplexity int) int
	}

	Measurements struct {
		BandSize func(childComplexity int) int
		CupSize  func(childComplexity int) int
		Hip      func(childComplexity int) int
		Waist    func(childComplexity int) int
	}

	Mutation struct {
		ActivateNewUser                 func(childComplexity int, input ActivateNewUserInput) int
		ApplyEdit                       func(childComplexity int, input ApplyEditInput) int
		CancelEdit                      func(childComplexity int, input CancelEditInput) int
		ChangePassword                  func(childComplexity int, input UserChangePasswordInput) int
		ConfirmChangeEmail              func(childComplexity int, token uuid.UUID) int
		DestroyDraft                    func(childComplexity int, id uuid.UUID) int
		EditComment                     func(childComplexity int, input EditCommentInput) int
		EditVote                        func(childComplexity int, input EditVoteInput) int
		FavoritePerformer               func(childComplexity int, id uuid.UUID, favorite bool) int
		FavoriteStudio                  func(childComplexity int, id uuid.UUID, favorite bool) int
		GenerateInviteCode              func(childComplexity int) int
		GenerateInviteCodes             func(childComplexity int, input *GenerateInviteCodeInput) int
		GrantInvite                     func(childComplexity int, input GrantInviteInput) int
		ImageCreate                     func(childComplexity int, input ImageCreateInput) int
		ImageDestroy                    func(childComplexity int, input ImageDestroyInput) int
		MarkNotificationsRead           func(childComplexity int, notification *MarkNotificationReadInput) int
		NewUser                         func(childComplexity int, input NewUserInput) int
		PerformerCreate                 func(childComplexity int, input PerformerCreateInput) int
		PerformerDestroy                func(childComplexity int, input PerformerDestroyInput) int
		PerformerEdit                   func(childComplexity int, input PerformerEditInput) int
		PerformerEditUpdate             func(childComplexity int, id uuid.UUID, input PerformerEditInput) int
		PerformerUpdate                 func(childComplexity int, input PerformerUpdateInput) int
		RegenerateAPIKey                func(childComplexity int, userID *uuid.UUID) int
		RequestChangeEmail              func(childComplexity int) int
		RescindInviteCode               func(childComplexity int, code uuid.UUID) int
		ResetPassword                   func(childComplexity int, input ResetPasswordInput) int
		RevokeInvite                    func(childComplexity int, input RevokeInviteInput) int
		SceneCreate                     func(childComplexity int, input SceneCreateInput) int
		SceneDestroy                    func(childComplexity int, input SceneDestroyInput) int
		SceneEdit                       func(childComplexity int, input SceneEditInput) int
		SceneEditUpdate                 func(childComplexity int, id uuid.UUID, input SceneEditInput) int
		SceneUpdate                     func(childComplexity int, input SceneUpdateInput) int
		SiteCreate                      func(childComplexity int, input SiteCreateInput) int
		SiteDestroy                     func(childComplexity int, input SiteDestroyInput) int
		SiteUpdate                      func(childComplexity int, input SiteUpdateInput) int
		StudioCreate                    func(childComplexity int, input StudioCreateInput) int
		StudioDestroy                   func(childComplexity int, input StudioDestroyInput) int
		StudioEdit                      func(childComplexity int, input StudioEditInput) int
		StudioEditUpdate                func(childComplexity int, id uuid.UUID, input StudioEditInput) int
		StudioUpdate                    func(childComplexity int, input StudioUpdateInput) int
		SubmitFingerprint               func(childComplexity int, input FingerprintSubmission) int
		SubmitPerformerDraft            func(childComplexity int, input PerformerDraftInput) int
		SubmitSceneDraft                func(childComplexity int, input SceneDraftInput) int
		TagCategoryCreate               func(childComplexity int, input TagCategoryCreateInput) int
		TagCategoryDestroy              func(childComplexity int, input TagCategoryDestroyInput) int
		TagCategoryUpdate               func(childComplexity int, input TagCategoryUpdateInput) int
		TagCreate                       func(childComplexity int, input TagCreateInput) int
		TagDestroy                      func(childComplexity int, input TagDestroyInput) int
		TagEdit                         func(childComplexity int, input TagEditInput) int
		TagEditUpdate                   func(childComplexity int, id uuid.UUID, input TagEditInput) int
		TagUpdate                       func(childComplexity int, input TagUpdateInput) int
		UpdateNotificationSubscriptions func(childComplexity int, subscriptions []NotificationEnum) int
		UserCreate                      func(childComplexity int, input UserCreateInput) int
		UserDestroy                     func(childComplexity int, input UserDestroyInput) int
		UserUpdate                      func(childComplexity int, input UserUpdateInput) int
		ValidateChangeEmail             func(childComplexity int, token uuid.UUID, email string) int
	}

	Notification struct {
		Created func(childComplexity int) int
		Data    func(childComplexity int) int
		Read    func(childComplexity int) int
	}

	Performer struct {
		Age             func(childComplexity int) int
		Aliases         func(childComplexity int) int
		BandSize        func(childComplexity int) int
		BirthDate       func(childComplexity int) int
		Birthdate       func(childComplexity int) int
		BreastType      func(childComplexity int) int
		CareerEndYear   func(childComplexity int) int
		CareerStartYear func(childComplexity int) int
		Country         func(childComplexity int) int
		Created         func(childComplexity int) int
		CupSize         func(childComplexity int) int
		DeathDate       func(childComplexity int) int
		Deleted         func(childComplexity int) int
		Disambiguation  func(childComplexity int) int
		Edits           func(childComplexity int) int
		Ethnicity       func(childComplexity int) int
		EyeColor        func(childComplexity int) int
		Gender          func(childComplexity int) int
		HairColor       func(childComplexity int) int
		Height          func(childComplexity int) int
		HipSize         func(childComplexity int) int
		ID              func(childComplexity int) int
		Images          func(childComplexity int) int
		IsFavorite      func(childComplexity int) int
		Measurements    func(childComplexity int) int
		MergedIds       func(childComplexity int) int
		MergedIntoID    func(childComplexity int) int
		Name            func(childComplexity int) int
		Piercings       func(childComplexity int) int
		SceneCount      func(childComplexity int) int
		Scenes          func(childComplexity int, input *PerformerScenesInput) int
		Studios         func(childComplexity int) int
		Tattoos         func(childComplexity int) int
		Updated         func(childComplexity int) int
		Urls            func(childComplexity int) int
		WaistSize       func(childComplexity int) int
	}

	PerformerAppearance struct {
		As        func(childComplexity int) int
		Performer func(childComplexity int) int
	}

	PerformerDraft struct {
		Aliases         func(childComplexity int) int
		Birthdate       func(childComplexity int) int
		BreastType      func(childComplexity int) int
		CareerEndYear   func(childComplexity int) int
		CareerStartYear func(childComplexity int) int
		Country         func(childComplexity int) int
		Deathdate       func(childComplexity int) int
		Disambiguation  func(childComplexity int) int
		Ethnicity       func(childComplexity int) int
		EyeColor        func(childComplexity int) int
		Gender          func(childComplexity int) int
		HairColor       func(childComplexity int) int
		Height          func(childComplexity int) int
		ID              func(childComplexity int) int
		Image           func(childComplexity int) int
		Measurements    func(childComplexity int) int
		Name            func(childComplexity int) int
		Piercings       func(childComplexity int) int
		Tattoos         func(childComplexity int) int
		Urls            func(childComplexity int) int
	}

	PerformerEdit struct {
		AddedAliases     func(childComplexity int) int
		AddedImages      func(childComplexity int) int
		AddedPiercings   func(childComplexity int) int
		AddedTattoos     func(childComplexity int) int
		AddedUrls        func(childComplexity int) int
		Aliases          func(childComplexity int) int
		BandSize         func(childComplexity int) int
		Birthdate        func(childComplexity int) int
		BreastType       func(childComplexity int) int
		CareerEndYear    func(childComplexity int) int
		CareerStartYear  func(childComplexity int) int
		Country          func(childComplexity int) int
		CupSize          func(childComplexity int) int
		Deathdate        func(childComplexity int) int
		Disambiguation   func(childComplexity int) int
		DraftID          func(childComplexity int) int
		Ethnicity        func(childComplexity int) int
		EyeColor         func(childComplexity int) int
		Gender           func(childComplexity int) int
		HairColor        func(childComplexity int) int
		Height           func(childComplexity int) int
		HipSize          func(childComplexity int) int
		Images           func(childComplexity int) int
		Name             func(childComplexity int) int
		Piercings        func(childComplexity int) int
		RemovedAliases   func(childComplexity int) int
		RemovedImages    func(childComplexity int) int
		RemovedPiercings func(childComplexity int) int
		RemovedTattoos   func(childComplexity int) int
		RemovedUrls      func(childComplexity int) int
		Tattoos          func(childComplexity int) int
		Urls             func(childComplexity int) int
		WaistSize        func(childComplexity int) int
	}

	PerformerEditOptions struct {
		SetMergeAliases  func(childComplexity int) int
		SetModifyAliases func(childComplexity int) int
	}

	PerformerStudio struct {
		SceneCount func(childComplexity int) int
		Studio     func(childComplexity int) int
	}

	Query struct {
		FindDraft                     func(childComplexity int, id uuid.UUID) int
		FindDrafts                    func(childComplexity int) int
		FindEdit                      func(childComplexity int, id uuid.UUID) int
		FindPerformer                 func(childComplexity int, id uuid.UUID) int
		FindScene                     func(childComplexity int, id uuid.UUID) int
		FindSceneByFingerprint        func(childComplexity int, fingerprint FingerprintQueryInput) int
		FindScenesByFingerprints      func(childComplexity int, fingerprints []string) int
		FindScenesByFullFingerprints  func(childComplexity int, fingerprints []FingerprintQueryInput) int
		FindScenesBySceneFingerprints func(childComplexity int, fingerprints [][]FingerprintQueryInput) int
		FindSite                      func(childComplexity int, id uuid.UUID) int
		FindStudio                    func(childComplexity int, id *uuid.UUID, name *string) int
		FindTag                       func(childComplexity int, id *uuid.UUID, name *string) int
		FindTagCategory               func(childComplexity int, id uuid.UUID) int
		FindTagOrAlias                func(childComplexity int, name string) int
		FindUser                      func(childComplexity int, id *uuid.UUID, username *string) int
		GetConfig                     func(childComplexity int) int
		GetUnreadNotificationCount    func(childComplexity int) int
		Me                            func(childComplexity int) int
		QueryEdits                    func(childComplexity int, input EditQueryInput) int
		QueryExistingPerformer        func(childComplexity int, input QueryExistingPerformerInput) int
		QueryExistingScene            func(childComplexity int, input QueryExistingSceneInput) int
		QueryNotifications            func(childComplexity int, input QueryNotificationsInput) int
		QueryPerformers               func(childComplexity int, input PerformerQueryInput) int
		QueryScenes                   func(childComplexity int, input SceneQueryInput) int
		QuerySites                    func(childComplexity int) int
		QueryStudios                  func(childComplexity int, input StudioQueryInput) int
		QueryTagCategories            func(childComplexity int) int
		QueryTags                     func(childComplexity int, input TagQueryInput) int
		QueryUsers                    func(childComplexity int, input UserQueryInput) int
		SearchPerformer               func(childComplexity int, term string, limit *int) int
		SearchScene                   func(childComplexity int, term string, limit *int) int
		SearchStudio                  func(childComplexity int, term string, limit *int) int
		SearchTag                     func(childComplexity int, term string, limit *int) int
		Version                       func(childComplexity int) int
	}

	QueryEditsResultType struct {
		Count func(childComplexity int) int
		Edits func(childComplexity int) int
	}

	QueryExistingPerformerResult struct {
		Edits      func(childComplexity int) int
		Performers func(childComplexity int) int
	}

	QueryExistingSceneResult struct {
		Edits  func(childComplexity int) int
		Scenes func(childComplexity int) int
	}

	QueryNotificationsResult struct {
		Count         func(childComplexity int) int
		Notifications func(childComplexity int) int
	}

	QueryPerformersResultType struct {
		Count      func(childComplexity int) int
		Performers func(childComplexity int) int
	}

	QueryScenesResultType struct {
		Count  func(childComplexity int) int
		Scenes func(childComplexity int) int
	}

	QuerySitesResultType struct {
		Count func(childComplexity int) int
		Sites func(childComplexity int) int
	}

	QueryStudiosResultType struct {
		Count   func(childComplexity int) int
		Studios func(childComplexity int) int
	}

	QueryTagCategoriesResultType struct {
		Count         func(childComplexity int) int
		TagCategories func(childComplexity int) int
	}

	QueryTagsResultType struct {
		Count func(childComplexity int) int
		Tags  func(childComplexity int) int
	}

	QueryUsersResultType struct {
		Count func(childComplexity int) int
		Users func(childComplexity int) int
	}

	Scene struct {
		Code           func(childComplexity int) int
		Created        func(childComplexity int) int
		Date           func(childComplexity int) int
		Deleted        func(childComplexity int) int
		Details        func(childComplexity int) int
		Director       func(childComplexity int) int
		Duration       func(childComplexity int) int
		Edits          func(childComplexity int) int
		Fingerprints   func(childComplexity int, isSubmitted *bool) int
		ID             func(childComplexity int) int
		Images         func(childComplexity int) int
		Performers     func(childComplexity int) int
		ProductionDate func(childComplexity int) int
		ReleaseDate    func(childComplexity int) int
		Studio         func(childComplexity int) int
		Tags           func(childComplexity int) int
		Title          func(childComplexity int) int
		Updated        func(childComplexity int) int
		Urls           func(childComplexity int) int
	}

	SceneDraft struct {
		Code           func(childComplexity int) int
		Date           func(childComplexity int) int
		Details        func(childComplexity int) int
		Director       func(childComplexity int) int
		Fingerprints   func(childComplexity int) int
		ID             func(childComplexity int) int
		Image          func(childComplexity int) int
		Performers     func(childComplexity int) int
		ProductionDate func(childComplexity int) int
		Studio         func(childComplexity int) int
		Tags           func(childComplexity int) int
		Title          func(childComplexity int) int
		URLs           func(childComplexity int) int
	}

	SceneEdit struct {
		AddedFingerprints   func(childComplexity int) int
		AddedImages         func(childComplexity int) int
		AddedPerformers     func(childComplexity int) int
		AddedTags           func(childComplexity int) int
		AddedUrls           func(childComplexity int) int
		Code                func(childComplexity int) int
		Date                func(childComplexity int) int
		Details             func(childComplexity int) int
		Director            func(childComplexity int) int
		DraftID             func(childComplexity int) int
		Duration            func(childComplexity int) int
		Fingerprints        func(childComplexity int) int
		Images              func(childComplexity int) int
		Performers          func(childComplexity int) int
		ProductionDate      func(childComplexity int) int
		RemovedFingerprints func(childComplexity int) int
		RemovedImages       func(childComplexity int) int
		RemovedPerformers   func(childComplexity int) int
		RemovedTags         func(childComplexity int) int
		RemovedUrls         func(childComplexity int) int
		Studio              func(childComplexity int) int
		Tags                func(childComplexity int) int
		Title               func(childComplexity int) int
		Urls                func(childComplexity int) int
	}

	Site struct {
		Created     func(childComplexity int) int
		Description func(childComplexity int) int
		ID          func(childComplexity int) int
		Icon        func(childComplexity int) int
		Name        func(childComplexity int) int
		Regex       func(childComplexity int) int
		URL         func(childComplexity int) int
		Updated     func(childComplexity int) int
		ValidTypes  func(childComplexity int) int
	}

	StashBoxConfig struct {
		EditUpdateLimit            func(childComplexity int) int
		GuidelinesURL              func(childComplexity int) int
		HostURL                    func(childComplexity int) int
		MinDestructiveVotingPeriod func(childComplexity int) int
		RequireActivation          func(childComplexity int) int
		RequireInvite              func(childComplexity int) int
		RequireSceneDraft          func(childComplexity int) int
		RequireTagRole             func(childComplexity int) int
		VoteApplicationThreshold   func(childComplexity int) int
		VoteCronInterval           func(childComplexity int) int
		VotePromotionThreshold     func(childComplexity int) int
		VotingPeriod               func(childComplexity int) int
	}

	Studio struct {
		Aliases      func(childComplexity int) int
		ChildStudios func(childComplexity int) int
		Created      func(childComplexity int) int
		Deleted      func(childComplexity int) int
		ID           func(childComplexity int) int
		Images       func(childComplexity int) int
		IsFavorite   func(childComplexity int) int
		Name         func(childComplexity int) int
		Parent       func(childComplexity int) int
		Performers   func(childComplexity int, input PerformerQueryInput) int
		Updated      func(childComplexity int) int
		Urls         func(childComplexity int) int
	}

	StudioEdit struct {
		AddedAliases   func(childComplexity int) int
		AddedImages    func(childComplexity int) int
		AddedUrls      func(childComplexity int) int
		Images         func(childComplexity int) int
		Name           func(childComplexity int) int
		Parent         func(childComplexity int) int
		RemovedAliases func(childComplexity int) int
		RemovedImages  func(childComplexity int) int
		RemovedUrls    func(childComplexity int) int
		Urls           func(childComplexity int) int
	}

	Tag struct {
		Aliases     func(childComplexity int) int
		Category    func(childComplexity int) int
		Created     func(childComplexity int) int
		Deleted     func(childComplexity int) int
		Description func(childComplexity int) int
		Edits       func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
		Updated     func(childComplexity int) int
	}

	TagCategory struct {
		Description func(childComplexity int) int
		Group       func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
	}

	TagEdit struct {
		AddedAliases   func(childComplexity int) int
		Aliases        func(childComplexity int) int
		Category       func(childComplexity int) int
		Description    func(childComplexity int) int
		Name           func(childComplexity int) int
		RemovedAliases func(childComplexity int) int
	}

	URL struct {
		Site func(childComplexity int) int
		Type func(childComplexity int) int
		URL  func(childComplexity int) int
	}

	UpdatedEdit struct {
		Edit func(childComplexity int) int
	}

	User struct {
		APICalls                  func(childComplexity int) int
		APIKey                    func(childComplexity int) int
		ActiveInviteCodes         func(childComplexity int) int
		EditCount                 func(childComplexity int) int
		Email                     func(childComplexity int) int
		ID                        func(childComplexity int) int
		InviteCodes               func(childComplexity int) int
		InviteTokens              func(childComplexity int) int
		InvitedBy                 func(childComplexity int) int
		Name                      func(childComplexity int) int
		NotificationSubscriptions func(childComplexity int) int
		Roles                     func(childComplexity int) int
		VoteCount                 func(childComplexity int) int
	}

	UserEditCount struct {
		Accepted          func(childComplexity int) int
		Canceled          func(childComplexity int) int
		Failed            func(childComplexity int) int
		ImmediateAccepted func(childComplexity int) int
		ImmediateRejected func(childComplexity int) int
		Pending           func(childComplexity int) int
		Rejected          func(childComplexity int) int
	}

	UserVoteCount struct {
		Abstain         func(childComplexity int) int
		Accept          func(childComplexity int) int
		ImmediateAccept func(childComplexity int) int
		ImmediateReject func(childComplexity int) int
		Reject          func(childComplexity int) int
	}

	Version struct {
		BuildTime func(childComplexity int) int
		BuildType func(childComplexity int) int
		Hash      func(childComplexity int) int
		Version   func(childComplexity int) int
	}
}

type Config

type Config struct {
	Schema     *ast.Schema
	Resolvers  ResolverRoot
	Directives DirectiveRoot
	Complexity ComplexityRoot
}

type CriterionModifier

type CriterionModifier string
const (
	// =
	CriterionModifierEquals CriterionModifier = "EQUALS"
	// !=
	CriterionModifierNotEquals CriterionModifier = "NOT_EQUALS"
	// >
	CriterionModifierGreaterThan CriterionModifier = "GREATER_THAN"
	// <
	CriterionModifierLessThan CriterionModifier = "LESS_THAN"
	// IS NULL
	CriterionModifierIsNull CriterionModifier = "IS_NULL"
	// IS NOT NULL
	CriterionModifierNotNull CriterionModifier = "NOT_NULL"
	// INCLUDES ALL
	CriterionModifierIncludesAll CriterionModifier = "INCLUDES_ALL"
	CriterionModifierIncludes    CriterionModifier = "INCLUDES"
	CriterionModifierExcludes    CriterionModifier = "EXCLUDES"
)

func (CriterionModifier) IsValid

func (e CriterionModifier) IsValid() bool

func (CriterionModifier) MarshalGQL

func (e CriterionModifier) MarshalGQL(w io.Writer)

func (CriterionModifier) MarshalJSON

func (e CriterionModifier) MarshalJSON() ([]byte, error)

func (CriterionModifier) String

func (e CriterionModifier) String() string

func (*CriterionModifier) UnmarshalGQL

func (e *CriterionModifier) UnmarshalGQL(v any) error

func (*CriterionModifier) UnmarshalJSON

func (e *CriterionModifier) UnmarshalJSON(b []byte) error

type DateAccuracyEnum

type DateAccuracyEnum string
const (
	DateAccuracyEnumYear  DateAccuracyEnum = "YEAR"
	DateAccuracyEnumMonth DateAccuracyEnum = "MONTH"
	DateAccuracyEnumDay   DateAccuracyEnum = "DAY"
)

func (DateAccuracyEnum) IsValid

func (e DateAccuracyEnum) IsValid() bool

func (DateAccuracyEnum) MarshalGQL

func (e DateAccuracyEnum) MarshalGQL(w io.Writer)

func (DateAccuracyEnum) MarshalJSON

func (e DateAccuracyEnum) MarshalJSON() ([]byte, error)

func (DateAccuracyEnum) String

func (e DateAccuracyEnum) String() string

func (*DateAccuracyEnum) UnmarshalGQL

func (e *DateAccuracyEnum) UnmarshalGQL(v any) error

func (*DateAccuracyEnum) UnmarshalJSON

func (e *DateAccuracyEnum) UnmarshalJSON(b []byte) error

type DateCriterionInput

type DateCriterionInput struct {
	Value    string            `json:"value"`
	Modifier CriterionModifier `json:"modifier"`
}

type DirectiveRoot

type DirectiveRoot struct {
	HasRole     func(ctx context.Context, obj any, next graphql.Resolver, role RoleEnum) (res any, err error)
	IsUserOwner func(ctx context.Context, obj any, next graphql.Resolver) (res any, err error)
}

type DownvoteOwnEdit

type DownvoteOwnEdit struct {
	Edit *Edit `json:"edit"`
}

func (DownvoteOwnEdit) IsNotificationData

func (DownvoteOwnEdit) IsNotificationData()

type Draft

type Draft struct {
	ID        uuid.UUID       `db:"id" json:"id"`
	UserID    uuid.UUID       `db:"user_id" json:"user_id"`
	Type      string          `db:"type" json:"type"`
	Data      json.RawMessage `db:"data" json:"data"`
	CreatedAt time.Time       `db:"created_at" json:"created_at"`
}

func (*Draft) GetPerformerData

func (e *Draft) GetPerformerData() (*PerformerDraft, error)

func (*Draft) GetSceneData

func (e *Draft) GetSceneData() (*SceneDraft, error)

type DraftData

type DraftData interface {
	IsDraftData()
}

type DraftEntity

type DraftEntity struct {
	Name string     `json:"name"`
	ID   *uuid.UUID `json:"id,omitempty"`
}

func (DraftEntity) IsSceneDraftPerformer

func (DraftEntity) IsSceneDraftPerformer()

func (DraftEntity) IsSceneDraftStudio

func (DraftEntity) IsSceneDraftStudio()

func (DraftEntity) IsSceneDraftTag

func (DraftEntity) IsSceneDraftTag()

type DraftEntityInput

type DraftEntityInput struct {
	Name string     `json:"name"`
	ID   *uuid.UUID `json:"id,omitempty"`
}

type DraftFingerprint

type DraftFingerprint struct {
	Hash      string               `json:"hash"`
	Algorithm FingerprintAlgorithm `json:"algorithm"`
	Duration  int                  `json:"duration"`
}

type DraftResolver

type DraftResolver interface {
	Created(ctx context.Context, obj *Draft) (*time.Time, error)
	Expires(ctx context.Context, obj *Draft) (*time.Time, error)
	Data(ctx context.Context, obj *Draft) (DraftData, error)
}

type DraftSubmissionStatus

type DraftSubmissionStatus struct {
	ID *uuid.UUID `json:"id,omitempty"`
}

type Edit

type Edit struct {
	ID          uuid.UUID       `json:"id"`
	UserID      uuid.NullUUID   `json:"user_id"`
	TargetType  string          `json:"target_type"`
	Operation   string          `json:"operation"`
	VoteCount   int             `json:"votes"`
	Status      string          `json:"status"`
	Applied     bool            `json:"applied"`
	Data        json.RawMessage `json:"data"`
	Bot         bool            `json:"bot"`
	CreatedAt   time.Time       `json:"created_at"`
	UpdateCount int             `json:"update_count"`
	UpdatedAt   *time.Time      `json:"updated_at"`
	ClosedAt    *time.Time      `json:"closed_at"`
}

func NewEdit

func NewEdit(id uuid.UUID, user *User, targetType TargetTypeEnum, input *EditInput) *Edit

func (*Edit) Accept

func (e *Edit) Accept()

func (*Edit) Cancel

func (e *Edit) Cancel()

func (*Edit) Fail

func (e *Edit) Fail()

func (*Edit) GetData

func (e *Edit) GetData() *EditData

func (*Edit) GetPerformerData

func (e *Edit) GetPerformerData() (*PerformerEditData, error)

func (*Edit) GetSceneData

func (e *Edit) GetSceneData() (*SceneEditData, error)

func (*Edit) GetStudioData

func (e *Edit) GetStudioData() (*StudioEditData, error)

func (*Edit) GetTagData

func (e *Edit) GetTagData() (*TagEditData, error)

func (*Edit) ImmediateAccept

func (e *Edit) ImmediateAccept()

func (*Edit) ImmediateReject

func (e *Edit) ImmediateReject()

func (*Edit) IsDestructive

func (e *Edit) IsDestructive() bool

func (*Edit) Reject

func (e *Edit) Reject()

func (*Edit) SetData

func (e *Edit) SetData(data any) error

type EditComment

type EditComment struct {
	ID        uuid.UUID     `json:"id"`
	EditID    uuid.UUID     `json:"edit_id"`
	UserID    uuid.NullUUID `json:"user_id"`
	CreatedAt time.Time     `json:"created_at"`
	Text      string        `json:"text"`
}

func NewEditComment

func NewEditComment(id uuid.UUID, userID uuid.UUID, edit *Edit, text string) *EditComment

type EditCommentInput

type EditCommentInput struct {
	ID      uuid.UUID `json:"id"`
	Comment string    `json:"comment"`
}

type EditCommentResolver

type EditCommentResolver interface {
	User(ctx context.Context, obj *EditComment) (*User, error)
	Date(ctx context.Context, obj *EditComment) (*time.Time, error)
	Comment(ctx context.Context, obj *EditComment) (string, error)
	Edit(ctx context.Context, obj *EditComment) (*Edit, error)
}

type EditData

type EditData struct {
	New          *json.RawMessage `json:"new_data,omitempty"`
	Old          *json.RawMessage `json:"old_data,omitempty"`
	MergeSources []uuid.UUID      `json:"merge_sources,omitempty"`
}

type EditDetails

type EditDetails interface {
	IsEditDetails()
}

type EditInput

type EditInput struct {
	// Not required for create type
	ID        *uuid.UUID    `json:"id,omitempty"`
	Operation OperationEnum `json:"operation"`
	// Only required for merge type
	MergeSourceIds []uuid.UUID `json:"merge_source_ids,omitempty"`
	Comment        *string     `json:"comment,omitempty"`
	// Edit submitted by an automated script. Requires bot permission
	Bot *bool `json:"bot,omitempty"`
}

type EditQuery

type EditQuery struct {
	Filter EditQueryInput
}

type EditQueryInput

type EditQueryInput struct {
	// Filter by user id
	UserID *uuid.UUID `json:"user_id,omitempty"`
	// Filter by status
	Status *VoteStatusEnum `json:"status,omitempty"`
	// Filter by operation
	Operation *OperationEnum `json:"operation,omitempty"`
	// Filter by vote count
	VoteCount *IntCriterionInput `json:"vote_count,omitempty"`
	// Filter by applied status
	Applied *bool `json:"applied,omitempty"`
	// Filter by target type
	TargetType *TargetTypeEnum `json:"target_type,omitempty"`
	// Filter by target id
	TargetID *uuid.UUID `json:"target_id,omitempty"`
	// Filter by favorite status
	IsFavorite *bool `json:"is_favorite,omitempty"`
	// Filter by user voted status
	Voted *UserVotedFilterEnum `json:"voted,omitempty"`
	// Filter to bot edits only
	IsBot *bool `json:"is_bot,omitempty"`
	// Filter out user's own edits
	IncludeUserSubmitted *bool             `json:"include_user_submitted,omitempty"`
	Page                 int               `json:"page"`
	PerPage              int               `json:"per_page"`
	Direction            SortDirectionEnum `json:"direction"`
	Sort                 EditSortEnum      `json:"sort"`
}

type EditResolver

type EditResolver interface {
	User(ctx context.Context, obj *Edit) (*User, error)
	Target(ctx context.Context, obj *Edit) (EditTarget, error)
	TargetType(ctx context.Context, obj *Edit) (TargetTypeEnum, error)
	MergeSources(ctx context.Context, obj *Edit) ([]EditTarget, error)
	Operation(ctx context.Context, obj *Edit) (OperationEnum, error)

	Details(ctx context.Context, obj *Edit) (EditDetails, error)
	OldDetails(ctx context.Context, obj *Edit) (EditDetails, error)
	Options(ctx context.Context, obj *Edit) (*PerformerEditOptions, error)
	Comments(ctx context.Context, obj *Edit) ([]EditComment, error)
	Votes(ctx context.Context, obj *Edit) ([]EditVote, error)

	Destructive(ctx context.Context, obj *Edit) (bool, error)
	Status(ctx context.Context, obj *Edit) (VoteStatusEnum, error)

	Updatable(ctx context.Context, obj *Edit) (bool, error)
	Created(ctx context.Context, obj *Edit) (*time.Time, error)
	Updated(ctx context.Context, obj *Edit) (*time.Time, error)
	Closed(ctx context.Context, obj *Edit) (*time.Time, error)
	Expires(ctx context.Context, obj *Edit) (*time.Time, error)
}

type EditSortEnum

type EditSortEnum string
const (
	EditSortEnumCreatedAt EditSortEnum = "CREATED_AT"
	EditSortEnumUpdatedAt EditSortEnum = "UPDATED_AT"
	EditSortEnumClosedAt  EditSortEnum = "CLOSED_AT"
)

func (EditSortEnum) IsValid

func (e EditSortEnum) IsValid() bool

func (EditSortEnum) MarshalGQL

func (e EditSortEnum) MarshalGQL(w io.Writer)

func (EditSortEnum) MarshalJSON

func (e EditSortEnum) MarshalJSON() ([]byte, error)

func (EditSortEnum) String

func (e EditSortEnum) String() string

func (*EditSortEnum) UnmarshalGQL

func (e *EditSortEnum) UnmarshalGQL(v any) error

func (*EditSortEnum) UnmarshalJSON

func (e *EditSortEnum) UnmarshalJSON(b []byte) error

type EditTarget

type EditTarget interface {
	IsEditTarget()
}

type EditVote

type EditVote struct {
	EditID    uuid.UUID `json:"edit_id"`
	UserID    uuid.UUID `json:"user_id"`
	CreatedAt time.Time `json:"created_at"`
	Vote      string    `json:"vote"`
}

type EditVoteInput

type EditVoteInput struct {
	ID   uuid.UUID    `json:"id"`
	Vote VoteTypeEnum `json:"vote"`
}

type EditVoteResolver

type EditVoteResolver interface {
	User(ctx context.Context, obj *EditVote) (*User, error)
	Date(ctx context.Context, obj *EditVote) (*time.Time, error)
	Vote(ctx context.Context, obj *EditVote) (VoteTypeEnum, error)
}

type EthnicityEnum

type EthnicityEnum string
const (
	EthnicityEnumCaucasian     EthnicityEnum = "CAUCASIAN"
	EthnicityEnumBlack         EthnicityEnum = "BLACK"
	EthnicityEnumAsian         EthnicityEnum = "ASIAN"
	EthnicityEnumIndian        EthnicityEnum = "INDIAN"
	EthnicityEnumLatin         EthnicityEnum = "LATIN"
	EthnicityEnumMiddleEastern EthnicityEnum = "MIDDLE_EASTERN"
	EthnicityEnumMixed         EthnicityEnum = "MIXED"
	EthnicityEnumOther         EthnicityEnum = "OTHER"
)

func (EthnicityEnum) IsValid

func (e EthnicityEnum) IsValid() bool

func (EthnicityEnum) MarshalGQL

func (e EthnicityEnum) MarshalGQL(w io.Writer)

func (EthnicityEnum) MarshalJSON

func (e EthnicityEnum) MarshalJSON() ([]byte, error)

func (EthnicityEnum) String

func (e EthnicityEnum) String() string

func (*EthnicityEnum) UnmarshalGQL

func (e *EthnicityEnum) UnmarshalGQL(v any) error

func (*EthnicityEnum) UnmarshalJSON

func (e *EthnicityEnum) UnmarshalJSON(b []byte) error

type EthnicityFilterEnum

type EthnicityFilterEnum string
const (
	EthnicityFilterEnumUnknown       EthnicityFilterEnum = "UNKNOWN"
	EthnicityFilterEnumCaucasian     EthnicityFilterEnum = "CAUCASIAN"
	EthnicityFilterEnumBlack         EthnicityFilterEnum = "BLACK"
	EthnicityFilterEnumAsian         EthnicityFilterEnum = "ASIAN"
	EthnicityFilterEnumIndian        EthnicityFilterEnum = "INDIAN"
	EthnicityFilterEnumLatin         EthnicityFilterEnum = "LATIN"
	EthnicityFilterEnumMiddleEastern EthnicityFilterEnum = "MIDDLE_EASTERN"
	EthnicityFilterEnumMixed         EthnicityFilterEnum = "MIXED"
	EthnicityFilterEnumOther         EthnicityFilterEnum = "OTHER"
)

func (EthnicityFilterEnum) IsValid

func (e EthnicityFilterEnum) IsValid() bool

func (EthnicityFilterEnum) MarshalGQL

func (e EthnicityFilterEnum) MarshalGQL(w io.Writer)

func (EthnicityFilterEnum) MarshalJSON

func (e EthnicityFilterEnum) MarshalJSON() ([]byte, error)

func (EthnicityFilterEnum) String

func (e EthnicityFilterEnum) String() string

func (*EthnicityFilterEnum) UnmarshalGQL

func (e *EthnicityFilterEnum) UnmarshalGQL(v any) error

func (*EthnicityFilterEnum) UnmarshalJSON

func (e *EthnicityFilterEnum) UnmarshalJSON(b []byte) error

type EyeColorCriterionInput

type EyeColorCriterionInput struct {
	Value    *EyeColorEnum     `json:"value,omitempty"`
	Modifier CriterionModifier `json:"modifier"`
}

type EyeColorEnum

type EyeColorEnum string
const (
	EyeColorEnumBlue  EyeColorEnum = "BLUE"
	EyeColorEnumBrown EyeColorEnum = "BROWN"
	EyeColorEnumGrey  EyeColorEnum = "GREY"
	EyeColorEnumGreen EyeColorEnum = "GREEN"
	EyeColorEnumHazel EyeColorEnum = "HAZEL"
	EyeColorEnumRed   EyeColorEnum = "RED"
)

func (EyeColorEnum) IsValid

func (e EyeColorEnum) IsValid() bool

func (EyeColorEnum) MarshalGQL

func (e EyeColorEnum) MarshalGQL(w io.Writer)

func (EyeColorEnum) MarshalJSON

func (e EyeColorEnum) MarshalJSON() ([]byte, error)

func (EyeColorEnum) String

func (e EyeColorEnum) String() string

func (*EyeColorEnum) UnmarshalGQL

func (e *EyeColorEnum) UnmarshalGQL(v any) error

func (*EyeColorEnum) UnmarshalJSON

func (e *EyeColorEnum) UnmarshalJSON(b []byte) error

type FailedOwnEdit

type FailedOwnEdit struct {
	Edit *Edit `json:"edit"`
}

func (FailedOwnEdit) IsNotificationData

func (FailedOwnEdit) IsNotificationData()

type FavoriteFilter

type FavoriteFilter string
const (
	FavoriteFilterPerformer FavoriteFilter = "PERFORMER"
	FavoriteFilterStudio    FavoriteFilter = "STUDIO"
	FavoriteFilterAll       FavoriteFilter = "ALL"
)

func (FavoriteFilter) IsValid

func (e FavoriteFilter) IsValid() bool

func (FavoriteFilter) MarshalGQL

func (e FavoriteFilter) MarshalGQL(w io.Writer)

func (FavoriteFilter) MarshalJSON

func (e FavoriteFilter) MarshalJSON() ([]byte, error)

func (FavoriteFilter) String

func (e FavoriteFilter) String() string

func (*FavoriteFilter) UnmarshalGQL

func (e *FavoriteFilter) UnmarshalGQL(v any) error

func (*FavoriteFilter) UnmarshalJSON

func (e *FavoriteFilter) UnmarshalJSON(b []byte) error

type FavoritePerformerEdit

type FavoritePerformerEdit struct {
	Edit *Edit `json:"edit"`
}

func (FavoritePerformerEdit) IsNotificationData

func (FavoritePerformerEdit) IsNotificationData()

type FavoritePerformerScene

type FavoritePerformerScene struct {
	Scene *Scene `json:"scene"`
}

func (FavoritePerformerScene) IsNotificationData

func (FavoritePerformerScene) IsNotificationData()

type FavoriteStudioEdit

type FavoriteStudioEdit struct {
	Edit *Edit `json:"edit"`
}

func (FavoriteStudioEdit) IsNotificationData

func (FavoriteStudioEdit) IsNotificationData()

type FavoriteStudioScene

type FavoriteStudioScene struct {
	Scene *Scene `json:"scene"`
}

func (FavoriteStudioScene) IsNotificationData

func (FavoriteStudioScene) IsNotificationData()

type Fingerprint

type Fingerprint struct {
	Hash      string               `json:"hash"`
	Algorithm FingerprintAlgorithm `json:"algorithm"`
	Duration  int                  `json:"duration"`
	// number of times this fingerprint has been submitted (excluding reports)
	Submissions int `json:"submissions"`
	// number of times this fingerprint has been reported
	Reports int       `json:"reports"`
	Created time.Time `json:"created"`
	Updated time.Time `json:"updated"`
	// true if the current user submitted this fingerprint
	UserSubmitted bool `json:"user_submitted"`
	// true if the current user reported this fingerprint
	UserReported bool `json:"user_reported"`
}

type FingerprintAlgorithm

type FingerprintAlgorithm string
const (
	FingerprintAlgorithmMd5    FingerprintAlgorithm = "MD5"
	FingerprintAlgorithmOshash FingerprintAlgorithm = "OSHASH"
	FingerprintAlgorithmPhash  FingerprintAlgorithm = "PHASH"
)

func (FingerprintAlgorithm) IsValid

func (e FingerprintAlgorithm) IsValid() bool

func (FingerprintAlgorithm) MarshalGQL

func (e FingerprintAlgorithm) MarshalGQL(w io.Writer)

func (FingerprintAlgorithm) MarshalJSON

func (e FingerprintAlgorithm) MarshalJSON() ([]byte, error)

func (FingerprintAlgorithm) String

func (e FingerprintAlgorithm) String() string

func (*FingerprintAlgorithm) UnmarshalGQL

func (e *FingerprintAlgorithm) UnmarshalGQL(v any) error

func (*FingerprintAlgorithm) UnmarshalJSON

func (e *FingerprintAlgorithm) UnmarshalJSON(b []byte) error

type FingerprintEditInput

type FingerprintEditInput struct {
	UserIds     []uuid.UUID          `json:"user_ids,omitempty"`
	Hash        string               `json:"hash"`
	Algorithm   FingerprintAlgorithm `json:"algorithm"`
	Duration    int                  `json:"duration"`
	Created     time.Time            `json:"created"`
	Submissions *int                 `json:"submissions,omitempty"`
	Updated     *time.Time           `json:"updated,omitempty"`
}

type FingerprintInput

type FingerprintInput struct {
	// assumes current user if omitted. Ignored for non-modify Users
	UserIds   []uuid.UUID          `json:"user_ids,omitempty"`
	Hash      string               `json:"hash"`
	Algorithm FingerprintAlgorithm `json:"algorithm"`
	Duration  int                  `json:"duration"`
}

type FingerprintQueryInput

type FingerprintQueryInput struct {
	Hash      string               `json:"hash"`
	Algorithm FingerprintAlgorithm `json:"algorithm"`
}

type FingerprintSubmission

type FingerprintSubmission struct {
	SceneID     uuid.UUID                  `json:"scene_id"`
	Fingerprint *FingerprintInput          `json:"fingerprint"`
	Unmatch     *bool                      `json:"unmatch,omitempty"`
	Vote        *FingerprintSubmissionType `json:"vote,omitempty"`
}

type FingerprintSubmissionType

type FingerprintSubmissionType string
const (
	// Positive vote
	FingerprintSubmissionTypeValid FingerprintSubmissionType = "VALID"
	// Report as invalid
	FingerprintSubmissionTypeInvalid FingerprintSubmissionType = "INVALID"
	// Remove vote
	FingerprintSubmissionTypeRemove FingerprintSubmissionType = "REMOVE"
)

func (FingerprintSubmissionType) IsValid

func (e FingerprintSubmissionType) IsValid() bool

func (FingerprintSubmissionType) MarshalGQL

func (e FingerprintSubmissionType) MarshalGQL(w io.Writer)

func (FingerprintSubmissionType) MarshalJSON

func (e FingerprintSubmissionType) MarshalJSON() ([]byte, error)

func (FingerprintSubmissionType) String

func (e FingerprintSubmissionType) String() string

func (*FingerprintSubmissionType) UnmarshalGQL

func (e *FingerprintSubmissionType) UnmarshalGQL(v any) error

func (*FingerprintSubmissionType) UnmarshalJSON

func (e *FingerprintSubmissionType) UnmarshalJSON(b []byte) error

type FingerprintedSceneEdit

type FingerprintedSceneEdit struct {
	Edit *Edit `json:"edit"`
}

func (FingerprintedSceneEdit) IsNotificationData

func (FingerprintedSceneEdit) IsNotificationData()

type FuzzyDate

type FuzzyDate struct {
	Date     string           `json:"date"`
	Accuracy DateAccuracyEnum `json:"accuracy"`
}

type GenderEnum

type GenderEnum string
const (
	GenderEnumMale              GenderEnum = "MALE"
	GenderEnumFemale            GenderEnum = "FEMALE"
	GenderEnumTransgenderMale   GenderEnum = "TRANSGENDER_MALE"
	GenderEnumTransgenderFemale GenderEnum = "TRANSGENDER_FEMALE"
	GenderEnumIntersex          GenderEnum = "INTERSEX"
	GenderEnumNonBinary         GenderEnum = "NON_BINARY"
)

func (GenderEnum) IsValid

func (e GenderEnum) IsValid() bool

func (GenderEnum) MarshalGQL

func (e GenderEnum) MarshalGQL(w io.Writer)

func (GenderEnum) MarshalJSON

func (e GenderEnum) MarshalJSON() ([]byte, error)

func (GenderEnum) String

func (e GenderEnum) String() string

func (*GenderEnum) UnmarshalGQL

func (e *GenderEnum) UnmarshalGQL(v any) error

func (*GenderEnum) UnmarshalJSON

func (e *GenderEnum) UnmarshalJSON(b []byte) error

type GenderFilterEnum

type GenderFilterEnum string
const (
	GenderFilterEnumUnknown           GenderFilterEnum = "UNKNOWN"
	GenderFilterEnumMale              GenderFilterEnum = "MALE"
	GenderFilterEnumFemale            GenderFilterEnum = "FEMALE"
	GenderFilterEnumTransgenderMale   GenderFilterEnum = "TRANSGENDER_MALE"
	GenderFilterEnumTransgenderFemale GenderFilterEnum = "TRANSGENDER_FEMALE"
	GenderFilterEnumIntersex          GenderFilterEnum = "INTERSEX"
	GenderFilterEnumNonBinary         GenderFilterEnum = "NON_BINARY"
)

func (GenderFilterEnum) IsValid

func (e GenderFilterEnum) IsValid() bool

func (GenderFilterEnum) MarshalGQL

func (e GenderFilterEnum) MarshalGQL(w io.Writer)

func (GenderFilterEnum) MarshalJSON

func (e GenderFilterEnum) MarshalJSON() ([]byte, error)

func (GenderFilterEnum) String

func (e GenderFilterEnum) String() string

func (*GenderFilterEnum) UnmarshalGQL

func (e *GenderFilterEnum) UnmarshalGQL(v any) error

func (*GenderFilterEnum) UnmarshalJSON

func (e *GenderFilterEnum) UnmarshalJSON(b []byte) error

type GenerateInviteCodeInput

type GenerateInviteCodeInput struct {
	Keys *int `json:"keys,omitempty"`
	Uses *int `json:"uses,omitempty"`
	TTL  *int `json:"ttl,omitempty"`
}

type GrantInviteInput

type GrantInviteInput struct {
	UserID uuid.UUID `json:"user_id"`
	Amount int       `json:"amount"`
}

type HairColorCriterionInput

type HairColorCriterionInput struct {
	Value    *HairColorEnum    `json:"value,omitempty"`
	Modifier CriterionModifier `json:"modifier"`
}

type HairColorEnum

type HairColorEnum string
const (
	HairColorEnumBlonde   HairColorEnum = "BLONDE"
	HairColorEnumBrunette HairColorEnum = "BRUNETTE"
	HairColorEnumBlack    HairColorEnum = "BLACK"
	HairColorEnumRed      HairColorEnum = "RED"
	HairColorEnumAuburn   HairColorEnum = "AUBURN"
	HairColorEnumGrey     HairColorEnum = "GREY"
	HairColorEnumBald     HairColorEnum = "BALD"
	HairColorEnumVarious  HairColorEnum = "VARIOUS"
	HairColorEnumWhite    HairColorEnum = "WHITE"
	HairColorEnumOther    HairColorEnum = "OTHER"
)

func (HairColorEnum) IsValid

func (e HairColorEnum) IsValid() bool

func (HairColorEnum) MarshalGQL

func (e HairColorEnum) MarshalGQL(w io.Writer)

func (HairColorEnum) MarshalJSON

func (e HairColorEnum) MarshalJSON() ([]byte, error)

func (HairColorEnum) String

func (e HairColorEnum) String() string

func (*HairColorEnum) UnmarshalGQL

func (e *HairColorEnum) UnmarshalGQL(v any) error

func (*HairColorEnum) UnmarshalJSON

func (e *HairColorEnum) UnmarshalJSON(b []byte) error

type ID

type ID uuid.UUID

type IDCriterionInput

type IDCriterionInput struct {
	Value    []uuid.UUID       `json:"value"`
	Modifier CriterionModifier `json:"modifier"`
}

type Image

type Image struct {
	ID        uuid.UUID `json:"id"`
	RemoteURL *string   `json:"url"`
	Checksum  string    `json:"checksum"`
	Width     int       `json:"width"`
	Height    int       `json:"height"`
}

type ImageCreateInput

type ImageCreateInput struct {
	URL  *string         `json:"url,omitempty"`
	File *graphql.Upload `json:"file,omitempty"`
}

type ImageDestroyInput

type ImageDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type ImageResolver

type ImageResolver interface {
	URL(ctx context.Context, obj *Image) (string, error)
}

type ImageUpdateInput

type ImageUpdateInput struct {
	ID  uuid.UUID `json:"id"`
	URL *string   `json:"url,omitempty"`
}

type IntCriterionInput

type IntCriterionInput struct {
	Value    int               `json:"value"`
	Modifier CriterionModifier `json:"modifier"`
}

type InviteKey

type InviteKey struct {
	ID          uuid.UUID  `json:"id"`
	Uses        *int       `json:"uses"`
	GeneratedBy uuid.UUID  `json:"generated_by"`
	GeneratedAt time.Time  `json:"generated_at"`
	Expires     *time.Time `json:"expires"`
}

func (InviteKey) String

func (p InviteKey) String() string

type MarkNotificationReadInput

type MarkNotificationReadInput struct {
	Type NotificationEnum `json:"type"`
	ID   uuid.UUID        `json:"id"`
}

type Measurements

type Measurements struct {
	CupSize  *string `json:"cup_size,omitempty"`
	BandSize *int    `json:"band_size,omitempty"`
	Waist    *int    `json:"waist,omitempty"`
	Hip      *int    `json:"hip,omitempty"`
}

type MultiCriterionInput

type MultiCriterionInput interface {
	Count() int
	GetValues() []interface{}
	GetModifier() CriterionModifier
}

type MultiIDCriterionInput

type MultiIDCriterionInput struct {
	Value    []uuid.UUID       `json:"value,omitempty"`
	Modifier CriterionModifier `json:"modifier"`
}

func (MultiIDCriterionInput) Count

func (i MultiIDCriterionInput) Count() int

func (MultiIDCriterionInput) GetModifier

func (i MultiIDCriterionInput) GetModifier() CriterionModifier

func (MultiIDCriterionInput) GetValues

func (i MultiIDCriterionInput) GetValues() []interface{}

type MultiStringCriterionInput

type MultiStringCriterionInput struct {
	Value    []string          `json:"value"`
	Modifier CriterionModifier `json:"modifier"`
}

func (MultiStringCriterionInput) Count

func (i MultiStringCriterionInput) Count() int

func (MultiStringCriterionInput) GetModifier

func (MultiStringCriterionInput) GetValues

func (i MultiStringCriterionInput) GetValues() []interface{}

type Mutation

type Mutation struct {
}

type MutationResolver

type MutationResolver interface {
	SceneCreate(ctx context.Context, input SceneCreateInput) (*Scene, error)
	SceneUpdate(ctx context.Context, input SceneUpdateInput) (*Scene, error)
	SceneDestroy(ctx context.Context, input SceneDestroyInput) (bool, error)
	PerformerCreate(ctx context.Context, input PerformerCreateInput) (*Performer, error)
	PerformerUpdate(ctx context.Context, input PerformerUpdateInput) (*Performer, error)
	PerformerDestroy(ctx context.Context, input PerformerDestroyInput) (bool, error)
	StudioCreate(ctx context.Context, input StudioCreateInput) (*Studio, error)
	StudioUpdate(ctx context.Context, input StudioUpdateInput) (*Studio, error)
	StudioDestroy(ctx context.Context, input StudioDestroyInput) (bool, error)
	TagCreate(ctx context.Context, input TagCreateInput) (*Tag, error)
	TagUpdate(ctx context.Context, input TagUpdateInput) (*Tag, error)
	TagDestroy(ctx context.Context, input TagDestroyInput) (bool, error)
	UserCreate(ctx context.Context, input UserCreateInput) (*User, error)
	UserUpdate(ctx context.Context, input UserUpdateInput) (*User, error)
	UserDestroy(ctx context.Context, input UserDestroyInput) (bool, error)
	ImageCreate(ctx context.Context, input ImageCreateInput) (*Image, error)
	ImageDestroy(ctx context.Context, input ImageDestroyInput) (bool, error)
	NewUser(ctx context.Context, input NewUserInput) (*uuid.UUID, error)
	ActivateNewUser(ctx context.Context, input ActivateNewUserInput) (*User, error)
	GenerateInviteCode(ctx context.Context) (*uuid.UUID, error)
	GenerateInviteCodes(ctx context.Context, input *GenerateInviteCodeInput) ([]uuid.UUID, error)
	RescindInviteCode(ctx context.Context, code uuid.UUID) (bool, error)
	GrantInvite(ctx context.Context, input GrantInviteInput) (int, error)
	RevokeInvite(ctx context.Context, input RevokeInviteInput) (int, error)
	TagCategoryCreate(ctx context.Context, input TagCategoryCreateInput) (*TagCategory, error)
	TagCategoryUpdate(ctx context.Context, input TagCategoryUpdateInput) (*TagCategory, error)
	TagCategoryDestroy(ctx context.Context, input TagCategoryDestroyInput) (bool, error)
	SiteCreate(ctx context.Context, input SiteCreateInput) (*Site, error)
	SiteUpdate(ctx context.Context, input SiteUpdateInput) (*Site, error)
	SiteDestroy(ctx context.Context, input SiteDestroyInput) (bool, error)
	RegenerateAPIKey(ctx context.Context, userID *uuid.UUID) (string, error)
	ResetPassword(ctx context.Context, input ResetPasswordInput) (bool, error)
	ChangePassword(ctx context.Context, input UserChangePasswordInput) (bool, error)
	RequestChangeEmail(ctx context.Context) (UserChangeEmailStatus, error)
	ValidateChangeEmail(ctx context.Context, token uuid.UUID, email string) (UserChangeEmailStatus, error)
	ConfirmChangeEmail(ctx context.Context, token uuid.UUID) (UserChangeEmailStatus, error)
	SceneEdit(ctx context.Context, input SceneEditInput) (*Edit, error)
	PerformerEdit(ctx context.Context, input PerformerEditInput) (*Edit, error)
	StudioEdit(ctx context.Context, input StudioEditInput) (*Edit, error)
	TagEdit(ctx context.Context, input TagEditInput) (*Edit, error)
	SceneEditUpdate(ctx context.Context, id uuid.UUID, input SceneEditInput) (*Edit, error)
	PerformerEditUpdate(ctx context.Context, id uuid.UUID, input PerformerEditInput) (*Edit, error)
	StudioEditUpdate(ctx context.Context, id uuid.UUID, input StudioEditInput) (*Edit, error)
	TagEditUpdate(ctx context.Context, id uuid.UUID, input TagEditInput) (*Edit, error)
	EditVote(ctx context.Context, input EditVoteInput) (*Edit, error)
	EditComment(ctx context.Context, input EditCommentInput) (*Edit, error)
	ApplyEdit(ctx context.Context, input ApplyEditInput) (*Edit, error)
	CancelEdit(ctx context.Context, input CancelEditInput) (*Edit, error)
	SubmitFingerprint(ctx context.Context, input FingerprintSubmission) (bool, error)
	SubmitSceneDraft(ctx context.Context, input SceneDraftInput) (*DraftSubmissionStatus, error)
	SubmitPerformerDraft(ctx context.Context, input PerformerDraftInput) (*DraftSubmissionStatus, error)
	DestroyDraft(ctx context.Context, id uuid.UUID) (bool, error)
	FavoritePerformer(ctx context.Context, id uuid.UUID, favorite bool) (bool, error)
	FavoriteStudio(ctx context.Context, id uuid.UUID, favorite bool) (bool, error)
	MarkNotificationsRead(ctx context.Context, notification *MarkNotificationReadInput) (bool, error)
	UpdateNotificationSubscriptions(ctx context.Context, subscriptions []NotificationEnum) (bool, error)
}

type NewUserInput

type NewUserInput struct {
	Email     string     `json:"email"`
	InviteKey *uuid.UUID `json:"invite_key,omitempty"`
}

type NewUserTokenData

type NewUserTokenData struct {
	Email     string     `json:"email"`
	InviteKey *uuid.UUID `json:"invite_key,omitempty"`
}

type Notification

type Notification struct {
	UserID    uuid.UUID        `json:"user_id"`
	Type      NotificationEnum `json:"type"`
	TargetID  uuid.UUID        `json:"id"`
	CreatedAt time.Time        `json:"created_at"`
	ReadAt    *time.Time       `json:"read_at"`
}

type NotificationData

type NotificationData interface {
	IsNotificationData()
}

type NotificationEnum

type NotificationEnum string
const (
	NotificationEnumFavoritePerformerScene NotificationEnum = "FAVORITE_PERFORMER_SCENE"
	NotificationEnumFavoritePerformerEdit  NotificationEnum = "FAVORITE_PERFORMER_EDIT"
	NotificationEnumFavoriteStudioScene    NotificationEnum = "FAVORITE_STUDIO_SCENE"
	NotificationEnumFavoriteStudioEdit     NotificationEnum = "FAVORITE_STUDIO_EDIT"
	NotificationEnumCommentOwnEdit         NotificationEnum = "COMMENT_OWN_EDIT"
	NotificationEnumDownvoteOwnEdit        NotificationEnum = "DOWNVOTE_OWN_EDIT"
	NotificationEnumFailedOwnEdit          NotificationEnum = "FAILED_OWN_EDIT"
	NotificationEnumCommentCommentedEdit   NotificationEnum = "COMMENT_COMMENTED_EDIT"
	NotificationEnumCommentVotedEdit       NotificationEnum = "COMMENT_VOTED_EDIT"
	NotificationEnumUpdatedEdit            NotificationEnum = "UPDATED_EDIT"
	NotificationEnumFingerprintedSceneEdit NotificationEnum = "FINGERPRINTED_SCENE_EDIT"
)

func GetDefaultNotificationSubscriptions

func GetDefaultNotificationSubscriptions() []NotificationEnum

func (NotificationEnum) IsValid

func (e NotificationEnum) IsValid() bool

func (NotificationEnum) MarshalGQL

func (e NotificationEnum) MarshalGQL(w io.Writer)

func (NotificationEnum) MarshalJSON

func (e NotificationEnum) MarshalJSON() ([]byte, error)

func (NotificationEnum) String

func (e NotificationEnum) String() string

func (*NotificationEnum) UnmarshalGQL

func (e *NotificationEnum) UnmarshalGQL(v any) error

func (*NotificationEnum) UnmarshalJSON

func (e *NotificationEnum) UnmarshalJSON(b []byte) error

type NotificationResolver

type NotificationResolver interface {
	Created(ctx context.Context, obj *Notification) (*time.Time, error)
	Read(ctx context.Context, obj *Notification) (bool, error)
	Data(ctx context.Context, obj *Notification) (NotificationData, error)
}

type OperationEnum

type OperationEnum string
const (
	OperationEnumCreate  OperationEnum = "CREATE"
	OperationEnumModify  OperationEnum = "MODIFY"
	OperationEnumDestroy OperationEnum = "DESTROY"
	OperationEnumMerge   OperationEnum = "MERGE"
)

func (OperationEnum) IsValid

func (e OperationEnum) IsValid() bool

func (OperationEnum) MarshalGQL

func (e OperationEnum) MarshalGQL(w io.Writer)

func (OperationEnum) MarshalJSON

func (e OperationEnum) MarshalJSON() ([]byte, error)

func (OperationEnum) String

func (e OperationEnum) String() string

func (*OperationEnum) UnmarshalGQL

func (e *OperationEnum) UnmarshalGQL(v any) error

func (*OperationEnum) UnmarshalJSON

func (e *OperationEnum) UnmarshalJSON(b []byte) error

type Performer

type Performer struct {
	ID              uuid.UUID       `json:"id"`
	Name            string          `json:"name"`
	Disambiguation  *string         `json:"disambiguation,omitempty"`
	Gender          *GenderEnum     `json:"gender,omitempty"`
	BirthDate       *string         `json:"birth_date,omitempty"`
	DeathDate       *string         `json:"death_date,omitempty"`
	Ethnicity       *EthnicityEnum  `json:"ethnicity,omitempty"`
	Country         *string         `json:"country,omitempty"`
	EyeColor        *EyeColorEnum   `json:"eye_color,omitempty"`
	HairColor       *HairColorEnum  `json:"hair_color,omitempty"`
	Height          *int            `json:"height,omitempty"`
	CupSize         *string         `json:"cup_size,omitempty"`
	BandSize        *int            `json:"band_size,omitempty"`
	WaistSize       *int            `json:"waist_size,omitempty"`
	HipSize         *int            `json:"hip_size,omitempty"`
	BreastType      *BreastTypeEnum `json:"breast_type,omitempty"`
	CareerStartYear *int            `json:"career_start_year,omitempty"`
	CareerEndYear   *int            `json:"career_end_year,omitempty"`
	Deleted         bool            `json:"deleted"`
	Created         time.Time       `json:"created"`
	Updated         time.Time       `json:"updated"`
}

func (*Performer) CopyFromPerformerEdit

func (p *Performer) CopyFromPerformerEdit(input PerformerEdit, old PerformerEdit)

func (Performer) IsDeleted

func (p Performer) IsDeleted() bool

func (*Performer) IsEditTarget

func (p *Performer) IsEditTarget()

func (Performer) IsSceneDraftPerformer

func (Performer) IsSceneDraftPerformer()

func (*Performer) ValidateModifyEdit

func (p *Performer) ValidateModifyEdit(edit PerformerEditData) error

type PerformerAppearance

type PerformerAppearance struct {
	Performer *Performer `json:"performer"`
	// Performing as alias
	As *string `json:"as,omitempty"`
}

type PerformerAppearanceInput

type PerformerAppearanceInput struct {
	PerformerID uuid.UUID `json:"performer_id"`
	// Performing as alias
	As *string `json:"as,omitempty"`
}

type PerformerCreateInput

type PerformerCreateInput struct {
	Name            string                  `json:"name"`
	Disambiguation  *string                 `json:"disambiguation,omitempty"`
	Aliases         []string                `json:"aliases,omitempty"`
	Gender          *GenderEnum             `json:"gender,omitempty"`
	Urls            []URL                   `json:"urls,omitempty"`
	Birthdate       *string                 `json:"birthdate,omitempty"`
	Deathdate       *string                 `json:"deathdate,omitempty"`
	Ethnicity       *EthnicityEnum          `json:"ethnicity,omitempty"`
	Country         *string                 `json:"country,omitempty"`
	EyeColor        *EyeColorEnum           `json:"eye_color,omitempty"`
	HairColor       *HairColorEnum          `json:"hair_color,omitempty"`
	Height          *int                    `json:"height,omitempty"`
	CupSize         *string                 `json:"cup_size,omitempty"`
	BandSize        *int                    `json:"band_size,omitempty"`
	WaistSize       *int                    `json:"waist_size,omitempty"`
	HipSize         *int                    `json:"hip_size,omitempty"`
	BreastType      *BreastTypeEnum         `json:"breast_type,omitempty"`
	CareerStartYear *int                    `json:"career_start_year,omitempty"`
	CareerEndYear   *int                    `json:"career_end_year,omitempty"`
	Tattoos         []BodyModificationInput `json:"tattoos,omitempty"`
	Piercings       []BodyModificationInput `json:"piercings,omitempty"`
	ImageIds        []uuid.UUID             `json:"image_ids,omitempty"`
	DraftID         *uuid.UUID              `json:"draft_id,omitempty"`
}

type PerformerDestroyInput

type PerformerDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type PerformerDraft

type PerformerDraft struct {
	ID              *uuid.UUID `json:"id,omitempty"`
	Name            string     `json:"name"`
	Disambiguation  *string    `json:"disambiguation,omitempty"`
	Aliases         *string    `json:"aliases,omitempty"`
	Gender          *string    `json:"gender,omitempty"`
	Birthdate       *string    `json:"birthdate,omitempty"`
	Deathdate       *string    `json:"deathdate,omitempty"`
	Urls            []string   `json:"urls,omitempty"`
	Ethnicity       *string    `json:"ethnicity,omitempty"`
	Country         *string    `json:"country,omitempty"`
	EyeColor        *string    `json:"eye_color,omitempty"`
	HairColor       *string    `json:"hair_color,omitempty"`
	Height          *string    `json:"height,omitempty"`
	Measurements    *string    `json:"measurements,omitempty"`
	BreastType      *string    `json:"breast_type,omitempty"`
	Tattoos         *string    `json:"tattoos,omitempty"`
	Piercings       *string    `json:"piercings,omitempty"`
	CareerStartYear *int       `json:"career_start_year,omitempty"`
	CareerEndYear   *int       `json:"career_end_year,omitempty"`
	Image           *uuid.UUID `json:"image,omitempty"`
}

func (PerformerDraft) IsDraftData

func (PerformerDraft) IsDraftData()

type PerformerDraftInput

type PerformerDraftInput struct {
	ID              *uuid.UUID      `json:"id,omitempty"`
	Disambiguation  *string         `json:"disambiguation,omitempty"`
	Name            string          `json:"name"`
	Aliases         *string         `json:"aliases,omitempty"`
	Gender          *string         `json:"gender,omitempty"`
	Birthdate       *string         `json:"birthdate,omitempty"`
	Deathdate       *string         `json:"deathdate,omitempty"`
	Urls            []string        `json:"urls,omitempty"`
	Ethnicity       *string         `json:"ethnicity,omitempty"`
	Country         *string         `json:"country,omitempty"`
	EyeColor        *string         `json:"eye_color,omitempty"`
	HairColor       *string         `json:"hair_color,omitempty"`
	Height          *string         `json:"height,omitempty"`
	Measurements    *string         `json:"measurements,omitempty"`
	BreastType      *string         `json:"breast_type,omitempty"`
	Tattoos         *string         `json:"tattoos,omitempty"`
	Piercings       *string         `json:"piercings,omitempty"`
	CareerStartYear *int            `json:"career_start_year,omitempty"`
	CareerEndYear   *int            `json:"career_end_year,omitempty"`
	Image           *graphql.Upload `json:"image,omitempty"`
}

type PerformerDraftResolver

type PerformerDraftResolver interface {
	Image(ctx context.Context, obj *PerformerDraft) (*Image, error)
}

type PerformerEdit

type PerformerEdit struct {
	EditID           uuid.UUID          `json:"-"`
	Name             *string            `json:"name,omitempty"`
	Disambiguation   *string            `json:"disambiguation,omitempty"`
	AddedAliases     []string           `json:"added_aliases,omitempty"`
	RemovedAliases   []string           `json:"removed_aliases,omitempty"`
	Gender           *string            `json:"gender,omitempty"`
	AddedUrls        []URL              `json:"added_urls,omitempty"`
	RemovedUrls      []URL              `json:"removed_urls,omitempty"`
	Birthdate        *string            `json:"birthdate,omitempty"`
	Deathdate        *string            `json:"deathdate,omitempty"`
	Ethnicity        *string            `json:"ethnicity,omitempty"`
	Country          *string            `json:"country,omitempty"`
	EyeColor         *string            `json:"eye_color,omitempty"`
	HairColor        *string            `json:"hair_color,omitempty"`
	Height           *int               `json:"height,omitempty"`
	CupSize          *string            `json:"cup_size,omitempty"`
	BandSize         *int               `json:"band_size,omitempty"`
	WaistSize        *int               `json:"waist_size,omitempty"`
	HipSize          *int               `json:"hip_size,omitempty"`
	BreastType       *string            `json:"breast_type,omitempty"`
	CareerStartYear  *int               `json:"career_start_year,omitempty"`
	CareerEndYear    *int               `json:"career_end_year,omitempty"`
	AddedTattoos     []BodyModification `json:"added_tattoos,omitempty"`
	RemovedTattoos   []BodyModification `json:"removed_tattoos,omitempty"`
	AddedPiercings   []BodyModification `json:"added_piercings,omitempty"`
	RemovedPiercings []BodyModification `json:"removed_piercings,omitempty"`
	AddedImages      []uuid.UUID        `json:"added_images,omitempty"`
	RemovedImages    []uuid.UUID        `json:"removed_images,omitempty"`
	DraftID          *uuid.UUID         `json:"draft_id,omitempty"`
}

func (PerformerEdit) IsEditDetails

func (PerformerEdit) IsEditDetails()

type PerformerEditData

type PerformerEditData struct {
	New              *PerformerEdit `json:"new_data,omitempty"`
	Old              *PerformerEdit `json:"old_data,omitempty"`
	MergeSources     []uuid.UUID    `json:"merge_sources,omitempty"`
	SetModifyAliases bool           `json:"modify_aliases,omitempty"`
	SetMergeAliases  bool           `json:"merge_aliases,omitempty"`
}

type PerformerEditDetailsInput

type PerformerEditDetailsInput struct {
	Name            *string                 `json:"name,omitempty"`
	Disambiguation  *string                 `json:"disambiguation,omitempty"`
	Aliases         []string                `json:"aliases,omitempty"`
	Gender          *GenderEnum             `json:"gender,omitempty"`
	Urls            []URL                   `json:"urls,omitempty"`
	Birthdate       *string                 `json:"birthdate,omitempty"`
	Deathdate       *string                 `json:"deathdate,omitempty"`
	Ethnicity       *EthnicityEnum          `json:"ethnicity,omitempty"`
	Country         *string                 `json:"country,omitempty"`
	EyeColor        *EyeColorEnum           `json:"eye_color,omitempty"`
	HairColor       *HairColorEnum          `json:"hair_color,omitempty"`
	Height          *int                    `json:"height,omitempty"`
	CupSize         *string                 `json:"cup_size,omitempty"`
	BandSize        *int                    `json:"band_size,omitempty"`
	WaistSize       *int                    `json:"waist_size,omitempty"`
	HipSize         *int                    `json:"hip_size,omitempty"`
	BreastType      *BreastTypeEnum         `json:"breast_type,omitempty"`
	CareerStartYear *int                    `json:"career_start_year,omitempty"`
	CareerEndYear   *int                    `json:"career_end_year,omitempty"`
	Tattoos         []BodyModificationInput `json:"tattoos,omitempty"`
	Piercings       []BodyModificationInput `json:"piercings,omitempty"`
	ImageIds        []uuid.UUID             `json:"image_ids,omitempty"`
	DraftID         *uuid.UUID              `json:"draft_id,omitempty"`
}

func (PerformerEditDetailsInput) PerformerEditFromCreate

func (e PerformerEditDetailsInput) PerformerEditFromCreate(inputArgs utils.ArgumentsQuery) (*PerformerEditData, error)

func (PerformerEditDetailsInput) PerformerEditFromDiff

func (e PerformerEditDetailsInput) PerformerEditFromDiff(orig Performer, inputArgs utils.ArgumentsQuery) (*PerformerEditData, error)

func (PerformerEditDetailsInput) PerformerEditFromMerge

func (e PerformerEditDetailsInput) PerformerEditFromMerge(orig Performer, sources []uuid.UUID, inputArgs utils.ArgumentsQuery) (*PerformerEditData, error)

type PerformerEditInput

type PerformerEditInput struct {
	Edit *EditInput `json:"edit"`
	// Not required for destroy type
	Details *PerformerEditDetailsInput `json:"details,omitempty"`
	// Controls aliases modification for merges and name modifications
	Options *PerformerEditOptionsInput `json:"options,omitempty"`
}

type PerformerEditOptions

type PerformerEditOptions struct {
	// Set performer alias on scenes without alias to old name if name is changed
	SetModifyAliases bool `json:"set_modify_aliases"`
	// Set performer alias on scenes attached to merge sources to old name
	SetMergeAliases bool `json:"set_merge_aliases"`
}

type PerformerEditOptionsInput

type PerformerEditOptionsInput struct {
	// Set performer alias on scenes without alias to old name if name is changed
	SetModifyAliases *bool `json:"set_modify_aliases,omitempty"`
	// Set performer alias on scenes attached to merge sources to old name
	SetMergeAliases *bool `json:"set_merge_aliases,omitempty"`
}

type PerformerEditResolver

type PerformerEditResolver interface {
	Gender(ctx context.Context, obj *PerformerEdit) (*GenderEnum, error)

	Ethnicity(ctx context.Context, obj *PerformerEdit) (*EthnicityEnum, error)

	EyeColor(ctx context.Context, obj *PerformerEdit) (*EyeColorEnum, error)
	HairColor(ctx context.Context, obj *PerformerEdit) (*HairColorEnum, error)

	BreastType(ctx context.Context, obj *PerformerEdit) (*BreastTypeEnum, error)

	AddedImages(ctx context.Context, obj *PerformerEdit) ([]Image, error)
	RemovedImages(ctx context.Context, obj *PerformerEdit) ([]Image, error)

	Aliases(ctx context.Context, obj *PerformerEdit) ([]string, error)
	Urls(ctx context.Context, obj *PerformerEdit) ([]URL, error)
	Images(ctx context.Context, obj *PerformerEdit) ([]Image, error)
	Tattoos(ctx context.Context, obj *PerformerEdit) ([]BodyModification, error)
	Piercings(ctx context.Context, obj *PerformerEdit) ([]BodyModification, error)
}

type PerformerQuery

type PerformerQuery struct {
	Filter PerformerQueryInput
}

type PerformerQueryInput

type PerformerQueryInput struct {
	// Searches name and disambiguation - assumes like query unless quoted
	Names *string `json:"names,omitempty"`
	// Searches name only - assumes like query unless quoted
	Name *string `json:"name,omitempty"`
	// Search aliases only - assumes like query unless quoted
	Alias          *string               `json:"alias,omitempty"`
	Disambiguation *StringCriterionInput `json:"disambiguation,omitempty"`
	Gender         *GenderFilterEnum     `json:"gender,omitempty"`
	// Filter to search urls - assumes like query unless quoted
	URL             *string                         `json:"url,omitempty"`
	Birthdate       *DateCriterionInput             `json:"birthdate,omitempty"`
	Deathdate       *DateCriterionInput             `json:"deathdate,omitempty"`
	BirthYear       *IntCriterionInput              `json:"birth_year,omitempty"`
	Age             *IntCriterionInput              `json:"age,omitempty"`
	Ethnicity       *EthnicityFilterEnum            `json:"ethnicity,omitempty"`
	Country         *StringCriterionInput           `json:"country,omitempty"`
	EyeColor        *EyeColorCriterionInput         `json:"eye_color,omitempty"`
	HairColor       *HairColorCriterionInput        `json:"hair_color,omitempty"`
	Height          *IntCriterionInput              `json:"height,omitempty"`
	CupSize         *StringCriterionInput           `json:"cup_size,omitempty"`
	BandSize        *IntCriterionInput              `json:"band_size,omitempty"`
	WaistSize       *IntCriterionInput              `json:"waist_size,omitempty"`
	HipSize         *IntCriterionInput              `json:"hip_size,omitempty"`
	BreastType      *BreastTypeCriterionInput       `json:"breast_type,omitempty"`
	CareerStartYear *IntCriterionInput              `json:"career_start_year,omitempty"`
	CareerEndYear   *IntCriterionInput              `json:"career_end_year,omitempty"`
	Tattoos         *BodyModificationCriterionInput `json:"tattoos,omitempty"`
	Piercings       *BodyModificationCriterionInput `json:"piercings,omitempty"`
	// Filter by performerfavorite status for the current user
	IsFavorite *bool `json:"is_favorite,omitempty"`
	// Filter by a performer they have performed in scenes with
	PerformedWith *uuid.UUID `json:"performed_with,omitempty"`
	// Filter by a studio
	StudioID  *uuid.UUID        `json:"studio_id,omitempty"`
	Page      int               `json:"page"`
	PerPage   int               `json:"per_page"`
	Direction SortDirectionEnum `json:"direction"`
	Sort      PerformerSortEnum `json:"sort"`
}

type PerformerResolver

type PerformerResolver interface {
	Aliases(ctx context.Context, obj *Performer) ([]string, error)

	Urls(ctx context.Context, obj *Performer) ([]URL, error)
	Birthdate(ctx context.Context, obj *Performer) (*FuzzyDate, error)

	Age(ctx context.Context, obj *Performer) (*int, error)

	Measurements(ctx context.Context, obj *Performer) (*Measurements, error)

	Tattoos(ctx context.Context, obj *Performer) ([]BodyModification, error)
	Piercings(ctx context.Context, obj *Performer) ([]BodyModification, error)
	Images(ctx context.Context, obj *Performer) ([]Image, error)

	Edits(ctx context.Context, obj *Performer) ([]Edit, error)
	SceneCount(ctx context.Context, obj *Performer) (int, error)
	Scenes(ctx context.Context, obj *Performer, input *PerformerScenesInput) ([]Scene, error)
	MergedIds(ctx context.Context, obj *Performer) ([]uuid.UUID, error)
	MergedIntoID(ctx context.Context, obj *Performer) (*uuid.UUID, error)
	Studios(ctx context.Context, obj *Performer) ([]PerformerStudio, error)
	IsFavorite(ctx context.Context, obj *Performer) (bool, error)
}

type PerformerScene

type PerformerScene struct {
	PerformerID uuid.UUID
	As          *string
	SceneID     uuid.UUID
}

type PerformerScenesInput

type PerformerScenesInput struct {
	// Filter by another performer that also performs in the scenes
	PerformedWith *uuid.UUID `json:"performed_with,omitempty"`
	// Filter by a studio
	StudioID *uuid.UUID `json:"studio_id,omitempty"`
	// Filter by tags
	Tags *MultiIDCriterionInput `json:"tags,omitempty"`
}

type PerformerSortEnum

type PerformerSortEnum string
const (
	PerformerSortEnumName            PerformerSortEnum = "NAME"
	PerformerSortEnumBirthdate       PerformerSortEnum = "BIRTHDATE"
	PerformerSortEnumDeathdate       PerformerSortEnum = "DEATHDATE"
	PerformerSortEnumSceneCount      PerformerSortEnum = "SCENE_COUNT"
	PerformerSortEnumCareerStartYear PerformerSortEnum = "CAREER_START_YEAR"
	PerformerSortEnumDebut           PerformerSortEnum = "DEBUT"
	PerformerSortEnumLastScene       PerformerSortEnum = "LAST_SCENE"
	PerformerSortEnumCreatedAt       PerformerSortEnum = "CREATED_AT"
	PerformerSortEnumUpdatedAt       PerformerSortEnum = "UPDATED_AT"
)

func (PerformerSortEnum) IsValid

func (e PerformerSortEnum) IsValid() bool

func (PerformerSortEnum) MarshalGQL

func (e PerformerSortEnum) MarshalGQL(w io.Writer)

func (PerformerSortEnum) MarshalJSON

func (e PerformerSortEnum) MarshalJSON() ([]byte, error)

func (PerformerSortEnum) String

func (e PerformerSortEnum) String() string

func (*PerformerSortEnum) UnmarshalGQL

func (e *PerformerSortEnum) UnmarshalGQL(v any) error

func (*PerformerSortEnum) UnmarshalJSON

func (e *PerformerSortEnum) UnmarshalJSON(b []byte) error

type PerformerStudio

type PerformerStudio struct {
	Studio     *Studio `json:"studio"`
	SceneCount int     `json:"scene_count"`
}

type PerformerUpdateInput

type PerformerUpdateInput struct {
	ID              uuid.UUID               `json:"id"`
	Name            *string                 `json:"name,omitempty"`
	Disambiguation  *string                 `json:"disambiguation,omitempty"`
	Aliases         []string                `json:"aliases,omitempty"`
	Gender          *GenderEnum             `json:"gender,omitempty"`
	Urls            []URL                   `json:"urls,omitempty"`
	Birthdate       *string                 `json:"birthdate,omitempty"`
	Deathdate       *string                 `json:"deathdate,omitempty"`
	Ethnicity       *EthnicityEnum          `json:"ethnicity,omitempty"`
	Country         *string                 `json:"country,omitempty"`
	EyeColor        *EyeColorEnum           `json:"eye_color,omitempty"`
	HairColor       *HairColorEnum          `json:"hair_color,omitempty"`
	Height          *int                    `json:"height,omitempty"`
	CupSize         *string                 `json:"cup_size,omitempty"`
	BandSize        *int                    `json:"band_size,omitempty"`
	WaistSize       *int                    `json:"waist_size,omitempty"`
	HipSize         *int                    `json:"hip_size,omitempty"`
	BreastType      *BreastTypeEnum         `json:"breast_type,omitempty"`
	CareerStartYear *int                    `json:"career_start_year,omitempty"`
	CareerEndYear   *int                    `json:"career_end_year,omitempty"`
	Tattoos         []BodyModificationInput `json:"tattoos,omitempty"`
	Piercings       []BodyModificationInput `json:"piercings,omitempty"`
	ImageIds        []uuid.UUID             `json:"image_ids,omitempty"`
}

type Query

type Query struct {
}

The query root for this schema

type QueryEditsResultTypeResolver

type QueryEditsResultTypeResolver interface {
	Count(ctx context.Context, obj *EditQuery) (int, error)
	Edits(ctx context.Context, obj *EditQuery) ([]Edit, error)
}

type QueryExistingPerformerInput

type QueryExistingPerformerInput struct {
	Name           *string  `json:"name,omitempty"`
	Disambiguation *string  `json:"disambiguation,omitempty"`
	Urls           []string `json:"urls"`
}

type QueryExistingPerformerResult

type QueryExistingPerformerResult struct {
	Input QueryExistingPerformerInput
}

type QueryExistingPerformerResultResolver

type QueryExistingPerformerResultResolver interface {
	Edits(ctx context.Context, obj *QueryExistingPerformerResult) ([]Edit, error)
	Performers(ctx context.Context, obj *QueryExistingPerformerResult) ([]Performer, error)
}

type QueryExistingSceneInput

type QueryExistingSceneInput struct {
	Title        *string            `json:"title,omitempty"`
	StudioID     *uuid.UUID         `json:"studio_id,omitempty"`
	Fingerprints []FingerprintInput `json:"fingerprints"`
}

type QueryExistingSceneResult

type QueryExistingSceneResult struct {
	Input QueryExistingSceneInput
}

type QueryExistingSceneResultResolver

type QueryExistingSceneResultResolver interface {
	Edits(ctx context.Context, obj *QueryExistingSceneResult) ([]Edit, error)
	Scenes(ctx context.Context, obj *QueryExistingSceneResult) ([]Scene, error)
}

type QueryNotificationsInput

type QueryNotificationsInput struct {
	Page       int               `json:"page"`
	PerPage    int               `json:"per_page"`
	Type       *NotificationEnum `json:"type,omitempty"`
	UnreadOnly *bool             `json:"unread_only,omitempty"`
}

type QueryNotificationsResult

type QueryNotificationsResult struct {
	Input QueryNotificationsInput
}

type QueryNotificationsResultResolver

type QueryNotificationsResultResolver interface {
	Count(ctx context.Context, obj *QueryNotificationsResult) (int, error)
	Notifications(ctx context.Context, obj *QueryNotificationsResult) ([]Notification, error)
}

type QueryPerformersResultTypeResolver

type QueryPerformersResultTypeResolver interface {
	Count(ctx context.Context, obj *PerformerQuery) (int, error)
	Performers(ctx context.Context, obj *PerformerQuery) ([]Performer, error)
}

type QueryResolver

type QueryResolver interface {
	FindPerformer(ctx context.Context, id uuid.UUID) (*Performer, error)
	QueryPerformers(ctx context.Context, input PerformerQueryInput) (*PerformerQuery, error)
	FindStudio(ctx context.Context, id *uuid.UUID, name *string) (*Studio, error)
	QueryStudios(ctx context.Context, input StudioQueryInput) (*QueryStudiosResultType, error)
	FindTag(ctx context.Context, id *uuid.UUID, name *string) (*Tag, error)
	FindTagOrAlias(ctx context.Context, name string) (*Tag, error)
	QueryTags(ctx context.Context, input TagQueryInput) (*QueryTagsResultType, error)
	FindTagCategory(ctx context.Context, id uuid.UUID) (*TagCategory, error)
	QueryTagCategories(ctx context.Context) (*QueryTagCategoriesResultType, error)
	FindScene(ctx context.Context, id uuid.UUID) (*Scene, error)
	FindSceneByFingerprint(ctx context.Context, fingerprint FingerprintQueryInput) ([]Scene, error)
	FindScenesByFingerprints(ctx context.Context, fingerprints []string) ([]Scene, error)
	FindScenesByFullFingerprints(ctx context.Context, fingerprints []FingerprintQueryInput) ([]Scene, error)
	FindScenesBySceneFingerprints(ctx context.Context, fingerprints [][]FingerprintQueryInput) ([][]*Scene, error)
	QueryScenes(ctx context.Context, input SceneQueryInput) (*SceneQuery, error)
	FindSite(ctx context.Context, id uuid.UUID) (*Site, error)
	QuerySites(ctx context.Context) (*QuerySitesResultType, error)
	FindEdit(ctx context.Context, id uuid.UUID) (*Edit, error)
	QueryEdits(ctx context.Context, input EditQueryInput) (*EditQuery, error)
	FindUser(ctx context.Context, id *uuid.UUID, username *string) (*User, error)
	QueryUsers(ctx context.Context, input UserQueryInput) (*QueryUsersResultType, error)
	Me(ctx context.Context) (*User, error)
	SearchPerformer(ctx context.Context, term string, limit *int) ([]Performer, error)
	SearchScene(ctx context.Context, term string, limit *int) ([]Scene, error)
	SearchTag(ctx context.Context, term string, limit *int) ([]Tag, error)
	SearchStudio(ctx context.Context, term string, limit *int) ([]Studio, error)
	FindDraft(ctx context.Context, id uuid.UUID) (*Draft, error)
	FindDrafts(ctx context.Context) ([]Draft, error)
	QueryExistingScene(ctx context.Context, input QueryExistingSceneInput) (*QueryExistingSceneResult, error)
	QueryExistingPerformer(ctx context.Context, input QueryExistingPerformerInput) (*QueryExistingPerformerResult, error)
	Version(ctx context.Context) (*Version, error)
	GetConfig(ctx context.Context) (*StashBoxConfig, error)
	QueryNotifications(ctx context.Context, input QueryNotificationsInput) (*QueryNotificationsResult, error)
	GetUnreadNotificationCount(ctx context.Context) (int, error)
}

type QueryScenesResultTypeResolver

type QueryScenesResultTypeResolver interface {
	Count(ctx context.Context, obj *SceneQuery) (int, error)
	Scenes(ctx context.Context, obj *SceneQuery) ([]Scene, error)
}

type QuerySitesResultType

type QuerySitesResultType struct {
	Count int    `json:"count"`
	Sites []Site `json:"sites"`
}

type QueryStudiosResultType

type QueryStudiosResultType struct {
	Count   int      `json:"count"`
	Studios []Studio `json:"studios"`
}

type QueryTagCategoriesResultType

type QueryTagCategoriesResultType struct {
	Count         int           `json:"count"`
	TagCategories []TagCategory `json:"tag_categories"`
}

type QueryTagsResultType

type QueryTagsResultType struct {
	Count int   `json:"count"`
	Tags  []Tag `json:"tags"`
}

type QueryUsersResultType

type QueryUsersResultType struct {
	Count int    `json:"count"`
	Users []User `json:"users"`
}

type ResetPasswordInput

type ResetPasswordInput struct {
	Email string `json:"email"`
}

type ResolverRoot

type ResolverRoot interface {
	Draft() DraftResolver
	Edit() EditResolver
	EditComment() EditCommentResolver
	EditVote() EditVoteResolver
	Image() ImageResolver
	Mutation() MutationResolver
	Notification() NotificationResolver
	Performer() PerformerResolver
	PerformerDraft() PerformerDraftResolver
	PerformerEdit() PerformerEditResolver
	Query() QueryResolver
	QueryEditsResultType() QueryEditsResultTypeResolver
	QueryExistingPerformerResult() QueryExistingPerformerResultResolver
	QueryExistingSceneResult() QueryExistingSceneResultResolver
	QueryNotificationsResult() QueryNotificationsResultResolver
	QueryPerformersResultType() QueryPerformersResultTypeResolver
	QueryScenesResultType() QueryScenesResultTypeResolver
	Scene() SceneResolver
	SceneDraft() SceneDraftResolver
	SceneEdit() SceneEditResolver
	Site() SiteResolver
	Studio() StudioResolver
	StudioEdit() StudioEditResolver
	Tag() TagResolver
	TagCategory() TagCategoryResolver
	TagEdit() TagEditResolver
	URL() URLResolver
	User() UserResolver
}

type RevokeInviteInput

type RevokeInviteInput struct {
	UserID uuid.UUID `json:"user_id"`
	Amount int       `json:"amount"`
}

type RoleCriterionInput

type RoleCriterionInput struct {
	Value    []RoleEnum        `json:"value"`
	Modifier CriterionModifier `json:"modifier"`
}

type RoleEnum

type RoleEnum string
const (
	RoleEnumRead   RoleEnum = "READ"
	RoleEnumVote   RoleEnum = "VOTE"
	RoleEnumEdit   RoleEnum = "EDIT"
	RoleEnumModify RoleEnum = "MODIFY"
	RoleEnumAdmin  RoleEnum = "ADMIN"
	// May generate invites without tokens
	RoleEnumInvite RoleEnum = "INVITE"
	// May grant and rescind invite tokens and resind invite keys
	RoleEnumManageInvites RoleEnum = "MANAGE_INVITES"
	RoleEnumBot           RoleEnum = "BOT"
	RoleEnumReadOnly      RoleEnum = "READ_ONLY"
	RoleEnumEditTags      RoleEnum = "EDIT_TAGS"
)

func (RoleEnum) Implies

func (r RoleEnum) Implies(other RoleEnum) bool

func (RoleEnum) IsValid

func (e RoleEnum) IsValid() bool

func (RoleEnum) MarshalGQL

func (e RoleEnum) MarshalGQL(w io.Writer)

func (RoleEnum) MarshalJSON

func (e RoleEnum) MarshalJSON() ([]byte, error)

func (RoleEnum) String

func (e RoleEnum) String() string

func (*RoleEnum) UnmarshalGQL

func (e *RoleEnum) UnmarshalGQL(v any) error

func (*RoleEnum) UnmarshalJSON

func (e *RoleEnum) UnmarshalJSON(b []byte) error

type Scene

type Scene struct {
	ID             uuid.UUID     `json:"id"`
	Title          *string       `json:"title"`
	Details        *string       `json:"details"`
	Date           *string       `json:"date"`
	ProductionDate *string       `json:"production_date"`
	StudioID       uuid.NullUUID `json:"studio_id"`
	CreatedAt      time.Time     `json:"created_at"`
	UpdatedAt      time.Time     `json:"updated_at"`
	Duration       *int          `json:"duration"`
	Director       *string       `json:"director"`
	Code           *string       `json:"code"`
	Deleted        bool          `json:"deleted"`
}

func (*Scene) CopyFromSceneEdit

func (s *Scene) CopyFromSceneEdit(input SceneEdit, old *SceneEdit)

func (Scene) IsDeleted

func (s Scene) IsDeleted() bool

func (*Scene) IsEditTarget

func (s *Scene) IsEditTarget()

func (*Scene) ValidateModifyEdit

func (s *Scene) ValidateModifyEdit(edit SceneEditData) error

type SceneCreateInput

type SceneCreateInput struct {
	Title          *string                    `json:"title,omitempty"`
	Details        *string                    `json:"details,omitempty"`
	Urls           []URL                      `json:"urls,omitempty"`
	Date           string                     `json:"date"`
	ProductionDate *string                    `json:"production_date,omitempty"`
	StudioID       *uuid.UUID                 `json:"studio_id,omitempty"`
	Performers     []PerformerAppearanceInput `json:"performers,omitempty"`
	TagIds         []uuid.UUID                `json:"tag_ids,omitempty"`
	ImageIds       []uuid.UUID                `json:"image_ids,omitempty"`
	Fingerprints   []FingerprintEditInput     `json:"fingerprints"`
	Duration       *int                       `json:"duration,omitempty"`
	Director       *string                    `json:"director,omitempty"`
	Code           *string                    `json:"code,omitempty"`
}

type SceneDestroyInput

type SceneDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type SceneDraft

type SceneDraft struct {
	ID             *uuid.UUID         `json:"id,omitempty"`
	Title          *string            `json:"title,omitempty"`
	Code           *string            `json:"code,omitempty"`
	Details        *string            `json:"details,omitempty"`
	Director       *string            `json:"director,omitempty"`
	URLs           []string           `json:"urls,omitempty"`
	Date           *string            `json:"date,omitempty"`
	ProductionDate *string            `json:"production_date,omitempty"`
	Studio         *DraftEntity       `json:"studio,omitempty"`
	Performers     []DraftEntity      `json:"performers,omitempty"`
	Tags           []DraftEntity      `json:"tags,omitempty"`
	Image          *uuid.UUID         `json:"image,omitempty"`
	Fingerprints   []DraftFingerprint `json:"fingerprints"`
}

func (SceneDraft) IsDraftData

func (SceneDraft) IsDraftData()

type SceneDraftInput

type SceneDraftInput struct {
	ID             *uuid.UUID         `json:"id,omitempty"`
	Title          *string            `json:"title,omitempty"`
	Code           *string            `json:"code,omitempty"`
	Details        *string            `json:"details,omitempty"`
	Director       *string            `json:"director,omitempty"`
	URL            *string            `json:"url,omitempty"`
	Urls           []string           `json:"urls,omitempty"`
	Date           *string            `json:"date,omitempty"`
	ProductionDate *string            `json:"production_date,omitempty"`
	Studio         *DraftEntityInput  `json:"studio,omitempty"`
	Performers     []DraftEntityInput `json:"performers"`
	Tags           []DraftEntityInput `json:"tags,omitempty"`
	Image          *graphql.Upload    `json:"image,omitempty"`
	Fingerprints   []FingerprintInput `json:"fingerprints"`
}

type SceneDraftPerformer

type SceneDraftPerformer interface {
	IsSceneDraftPerformer()
}

type SceneDraftResolver

type SceneDraftResolver interface {
	Studio(ctx context.Context, obj *SceneDraft) (SceneDraftStudio, error)
	Performers(ctx context.Context, obj *SceneDraft) ([]SceneDraftPerformer, error)
	Tags(ctx context.Context, obj *SceneDraft) ([]SceneDraftTag, error)
	Image(ctx context.Context, obj *SceneDraft) (*Image, error)
}

type SceneDraftStudio

type SceneDraftStudio interface {
	IsSceneDraftStudio()
}

type SceneDraftTag

type SceneDraftTag interface {
	IsSceneDraftTag()
}

type SceneEdit

type SceneEdit struct {
	EditID              uuid.UUID                  `json:"-"`
	Title               *string                    `json:"title,omitempty"`
	Details             *string                    `json:"details,omitempty"`
	AddedUrls           []URL                      `json:"added_urls,omitempty"`
	RemovedUrls         []URL                      `json:"removed_urls,omitempty"`
	Date                *string                    `json:"date,omitempty"`
	ProductionDate      *string                    `json:"production_date,omitempty"`
	StudioID            *uuid.UUID                 `json:"studio_id,omitempty"`
	AddedPerformers     []PerformerAppearanceInput `json:"added_performers,omitempty"`
	RemovedPerformers   []PerformerAppearanceInput `json:"removed_performers,omitempty"`
	AddedTags           []uuid.UUID                `json:"added_tags,omitempty"`
	RemovedTags         []uuid.UUID                `json:"removed_tags,omitempty"`
	AddedImages         []uuid.UUID                `json:"added_images,omitempty"`
	RemovedImages       []uuid.UUID                `json:"removed_images,omitempty"`
	AddedFingerprints   []FingerprintInput         `json:"added_fingerprints,omitempty"`
	RemovedFingerprints []FingerprintInput         `json:"removed_fingerprints,omitempty"`
	Duration            *int                       `json:"duration,omitempty"`
	Director            *string                    `json:"director,omitempty"`
	Code                *string                    `json:"code,omitempty"`
	DraftID             *uuid.UUID                 `json:"draft_id,omitempty"`
}

func (SceneEdit) IsEditDetails

func (SceneEdit) IsEditDetails()

type SceneEditData

type SceneEditData struct {
	New          *SceneEdit  `json:"new_data,omitempty"`
	Old          *SceneEdit  `json:"old_data,omitempty"`
	MergeSources []uuid.UUID `json:"merge_sources,omitempty"`
}

type SceneEditDetailsInput

type SceneEditDetailsInput struct {
	Title          *string                    `json:"title,omitempty"`
	Details        *string                    `json:"details,omitempty"`
	Urls           []URL                      `json:"urls,omitempty"`
	Date           *string                    `json:"date,omitempty"`
	ProductionDate *string                    `json:"production_date,omitempty"`
	StudioID       *uuid.UUID                 `json:"studio_id,omitempty"`
	Performers     []PerformerAppearanceInput `json:"performers,omitempty"`
	TagIds         []uuid.UUID                `json:"tag_ids,omitempty"`
	ImageIds       []uuid.UUID                `json:"image_ids,omitempty"`
	Duration       *int                       `json:"duration,omitempty"`
	Director       *string                    `json:"director,omitempty"`
	Code           *string                    `json:"code,omitempty"`
	Fingerprints   []FingerprintInput         `json:"fingerprints,omitempty"`
	DraftID        *uuid.UUID                 `json:"draft_id,omitempty"`
}

func (SceneEditDetailsInput) SceneEditFromCreate

func (e SceneEditDetailsInput) SceneEditFromCreate(inputArgs utils.ArgumentsQuery) (*SceneEditData, error)

func (SceneEditDetailsInput) SceneEditFromDiff

func (e SceneEditDetailsInput) SceneEditFromDiff(orig Scene, inputArgs utils.ArgumentsQuery) (*SceneEditData, error)

func (SceneEditDetailsInput) SceneEditFromMerge

func (e SceneEditDetailsInput) SceneEditFromMerge(orig Scene, sources []uuid.UUID, inputArgs utils.ArgumentsQuery) (*SceneEditData, error)

type SceneEditInput

type SceneEditInput struct {
	Edit *EditInput `json:"edit"`
	// Not required for destroy type
	Details *SceneEditDetailsInput `json:"details,omitempty"`
}

type SceneEditResolver

type SceneEditResolver interface {
	Studio(ctx context.Context, obj *SceneEdit) (*Studio, error)
	AddedPerformers(ctx context.Context, obj *SceneEdit) ([]PerformerAppearance, error)
	RemovedPerformers(ctx context.Context, obj *SceneEdit) ([]PerformerAppearance, error)
	AddedTags(ctx context.Context, obj *SceneEdit) ([]Tag, error)
	RemovedTags(ctx context.Context, obj *SceneEdit) ([]Tag, error)
	AddedImages(ctx context.Context, obj *SceneEdit) ([]Image, error)
	RemovedImages(ctx context.Context, obj *SceneEdit) ([]Image, error)
	AddedFingerprints(ctx context.Context, obj *SceneEdit) ([]Fingerprint, error)
	RemovedFingerprints(ctx context.Context, obj *SceneEdit) ([]Fingerprint, error)

	Urls(ctx context.Context, obj *SceneEdit) ([]URL, error)
	Performers(ctx context.Context, obj *SceneEdit) ([]PerformerAppearance, error)
	Tags(ctx context.Context, obj *SceneEdit) ([]Tag, error)
	Images(ctx context.Context, obj *SceneEdit) ([]Image, error)
	Fingerprints(ctx context.Context, obj *SceneEdit) ([]Fingerprint, error)
}

type SceneFingerprint

type SceneFingerprint struct {
	SceneID   uuid.UUID `json:"scene_id"`
	UserID    uuid.UUID `json:"user_id"`
	Hash      string    `json:"hash"`
	Algorithm string    `json:"algorithm"`
	Duration  int       `json:"duration"`
	CreatedAt time.Time `json:"created_at"`
	Vote      int       `json:"vote"`
}

type SceneQuery

type SceneQuery struct {
	Filter SceneQueryInput
}

type SceneQueryInput

type SceneQueryInput struct {
	// Filter to search title and details - assumes like query unless quoted
	Text *string `json:"text,omitempty"`
	// Filter to search title - assumes like query unless quoted
	Title *string `json:"title,omitempty"`
	// Filter to search urls - assumes like query unless quoted
	URL *string `json:"url,omitempty"`
	// Filter by date
	Date *DateCriterionInput `json:"date,omitempty"`
	// Filter by production date
	ProductionDate *DateCriterionInput `json:"production_date,omitempty"`
	// Filter to only include scenes with this studio
	Studios *MultiIDCriterionInput `json:"studios,omitempty"`
	// Filter to only include scenes with this studio as primary or parent
	ParentStudio *string `json:"parentStudio,omitempty"`
	// Filter to only include scenes with these tags
	Tags *MultiIDCriterionInput `json:"tags,omitempty"`
	// Filter to only include scenes with these performers
	Performers *MultiIDCriterionInput `json:"performers,omitempty"`
	// Filter to include scenes with performer appearing as alias
	Alias *StringCriterionInput `json:"alias,omitempty"`
	// Filter to only include scenes with these fingerprints
	Fingerprints *MultiStringCriterionInput `json:"fingerprints,omitempty"`
	// Filter by favorited entity
	Favorites *FavoriteFilter `json:"favorites,omitempty"`
	// Filter to scenes with fingerprints submitted by the user
	HasFingerprintSubmissions *bool             `json:"has_fingerprint_submissions,omitempty"`
	Page                      int               `json:"page"`
	PerPage                   int               `json:"per_page"`
	Direction                 SortDirectionEnum `json:"direction"`
	Sort                      SceneSortEnum     `json:"sort"`
}

type SceneResolver

type SceneResolver interface {
	ReleaseDate(ctx context.Context, obj *Scene) (*string, error)

	Urls(ctx context.Context, obj *Scene) ([]URL, error)
	Studio(ctx context.Context, obj *Scene) (*Studio, error)
	Tags(ctx context.Context, obj *Scene) ([]Tag, error)
	Images(ctx context.Context, obj *Scene) ([]Image, error)
	Performers(ctx context.Context, obj *Scene) ([]PerformerAppearance, error)
	Fingerprints(ctx context.Context, obj *Scene, isSubmitted *bool) ([]Fingerprint, error)

	Edits(ctx context.Context, obj *Scene) ([]Edit, error)
	Created(ctx context.Context, obj *Scene) (*time.Time, error)
	Updated(ctx context.Context, obj *Scene) (*time.Time, error)
}

type SceneSortEnum

type SceneSortEnum string
const (
	SceneSortEnumTitle     SceneSortEnum = "TITLE"
	SceneSortEnumDate      SceneSortEnum = "DATE"
	SceneSortEnumTrending  SceneSortEnum = "TRENDING"
	SceneSortEnumCreatedAt SceneSortEnum = "CREATED_AT"
	SceneSortEnumUpdatedAt SceneSortEnum = "UPDATED_AT"
)

func (SceneSortEnum) IsValid

func (e SceneSortEnum) IsValid() bool

func (SceneSortEnum) MarshalGQL

func (e SceneSortEnum) MarshalGQL(w io.Writer)

func (SceneSortEnum) MarshalJSON

func (e SceneSortEnum) MarshalJSON() ([]byte, error)

func (SceneSortEnum) String

func (e SceneSortEnum) String() string

func (*SceneSortEnum) UnmarshalGQL

func (e *SceneSortEnum) UnmarshalGQL(v any) error

func (*SceneSortEnum) UnmarshalJSON

func (e *SceneSortEnum) UnmarshalJSON(b []byte) error

type SceneUpdateInput

type SceneUpdateInput struct {
	ID             uuid.UUID                  `json:"id"`
	Title          *string                    `json:"title,omitempty"`
	Details        *string                    `json:"details,omitempty"`
	Urls           []URL                      `json:"urls,omitempty"`
	Date           *string                    `json:"date,omitempty"`
	ProductionDate *string                    `json:"production_date,omitempty"`
	StudioID       *uuid.UUID                 `json:"studio_id,omitempty"`
	Performers     []PerformerAppearanceInput `json:"performers,omitempty"`
	TagIds         []uuid.UUID                `json:"tag_ids,omitempty"`
	ImageIds       []uuid.UUID                `json:"image_ids,omitempty"`
	Fingerprints   []FingerprintEditInput     `json:"fingerprints,omitempty"`
	Duration       *int                       `json:"duration,omitempty"`
	Director       *string                    `json:"director,omitempty"`
	Code           *string                    `json:"code,omitempty"`
}

type Site

type Site struct {
	ID          uuid.UUID `json:"id"`
	Name        string    `json:"name"`
	Description *string   `json:"description"`
	URL         *string   `json:"url"`
	Regex       *string   `json:"regex"`
	ValidTypes  []string  `json:"valid_types"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

type SiteCreateInput

type SiteCreateInput struct {
	Name        string              `json:"name"`
	Description *string             `json:"description,omitempty"`
	URL         *string             `json:"url,omitempty"`
	Regex       *string             `json:"regex,omitempty"`
	ValidTypes  []ValidSiteTypeEnum `json:"valid_types"`
}

type SiteDestroyInput

type SiteDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type SiteResolver

type SiteResolver interface {
	ValidTypes(ctx context.Context, obj *Site) ([]ValidSiteTypeEnum, error)
	Icon(ctx context.Context, obj *Site) (string, error)
	Created(ctx context.Context, obj *Site) (*time.Time, error)
	Updated(ctx context.Context, obj *Site) (*time.Time, error)
}

type SiteUpdateInput

type SiteUpdateInput struct {
	ID          uuid.UUID           `json:"id"`
	Name        string              `json:"name"`
	Description *string             `json:"description,omitempty"`
	URL         *string             `json:"url,omitempty"`
	Regex       *string             `json:"regex,omitempty"`
	ValidTypes  []ValidSiteTypeEnum `json:"valid_types"`
}

type SortDirectionEnum

type SortDirectionEnum string
const (
	SortDirectionEnumAsc  SortDirectionEnum = "ASC"
	SortDirectionEnumDesc SortDirectionEnum = "DESC"
)

func (SortDirectionEnum) IsValid

func (e SortDirectionEnum) IsValid() bool

func (SortDirectionEnum) MarshalGQL

func (e SortDirectionEnum) MarshalGQL(w io.Writer)

func (SortDirectionEnum) MarshalJSON

func (e SortDirectionEnum) MarshalJSON() ([]byte, error)

func (SortDirectionEnum) String

func (e SortDirectionEnum) String() string

func (*SortDirectionEnum) UnmarshalGQL

func (e *SortDirectionEnum) UnmarshalGQL(v any) error

func (*SortDirectionEnum) UnmarshalJSON

func (e *SortDirectionEnum) UnmarshalJSON(b []byte) error

type StashBoxConfig

type StashBoxConfig struct {
	HostURL                    string `json:"host_url"`
	RequireInvite              bool   `json:"require_invite"`
	RequireActivation          bool   `json:"require_activation"`
	VotePromotionThreshold     *int   `json:"vote_promotion_threshold,omitempty"`
	VoteApplicationThreshold   int    `json:"vote_application_threshold"`
	VotingPeriod               int    `json:"voting_period"`
	MinDestructiveVotingPeriod int    `json:"min_destructive_voting_period"`
	VoteCronInterval           string `json:"vote_cron_interval"`
	GuidelinesURL              string `json:"guidelines_url"`
	RequireSceneDraft          bool   `json:"require_scene_draft"`
	EditUpdateLimit            int    `json:"edit_update_limit"`
	RequireTagRole             bool   `json:"require_tag_role"`
}

type StringCriterionInput

type StringCriterionInput struct {
	Value    string            `json:"value"`
	Modifier CriterionModifier `json:"modifier"`
}

type Studio

type Studio struct {
	ID             uuid.UUID     `json:"id"`
	Name           string        `json:"name"`
	ParentStudioID uuid.NullUUID `json:"parent_studio_id"`
	CreatedAt      time.Time     `json:"created_at"`
	UpdatedAt      time.Time     `json:"updated_at"`
	Deleted        bool          `json:"deleted"`
}

func (*Studio) CopyFromStudioEdit

func (s *Studio) CopyFromStudioEdit(input StudioEdit, existing *StudioEdit)

func (Studio) IsDeleted

func (s Studio) IsDeleted() bool

func (*Studio) IsEditTarget

func (s *Studio) IsEditTarget()

func (Studio) IsSceneDraftStudio

func (Studio) IsSceneDraftStudio()

func (*Studio) ValidateModifyEdit

func (s *Studio) ValidateModifyEdit(edit StudioEditData) error

type StudioCreateInput

type StudioCreateInput struct {
	Name     string      `json:"name"`
	Aliases  []string    `json:"aliases,omitempty"`
	Urls     []URL       `json:"urls,omitempty"`
	ParentID *uuid.UUID  `json:"parent_id,omitempty"`
	ImageIds []uuid.UUID `json:"image_ids,omitempty"`
}

type StudioDestroyInput

type StudioDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type StudioEdit

type StudioEdit struct {
	EditID uuid.UUID `json:"-"`
	Name   *string   `json:"name"`
	// Added and modified URLs
	AddedUrls      []URL       `json:"added_urls,omitempty"`
	RemovedUrls    []URL       `json:"removed_urls,omitempty"`
	ParentID       *uuid.UUID  `json:"parent_id,omitempty"`
	AddedImages    []uuid.UUID `json:"added_images,omitempty"`
	RemovedImages  []uuid.UUID `json:"removed_images,omitempty"`
	AddedAliases   []string    `json:"added_aliases,omitempty"`
	RemovedAliases []string    `json:"removed_aliases,omitempty"`
}

func (StudioEdit) IsEditDetails

func (StudioEdit) IsEditDetails()

type StudioEditData

type StudioEditData struct {
	New          *StudioEdit `json:"new_data,omitempty"`
	Old          *StudioEdit `json:"old_data,omitempty"`
	MergeSources []uuid.UUID `json:"merge_sources,omitempty"`
}

type StudioEditDetailsInput

type StudioEditDetailsInput struct {
	Name     *string     `json:"name,omitempty"`
	Aliases  []string    `json:"aliases,omitempty"`
	Urls     []URL       `json:"urls,omitempty"`
	ParentID *uuid.UUID  `json:"parent_id,omitempty"`
	ImageIds []uuid.UUID `json:"image_ids,omitempty"`
}

func (StudioEditDetailsInput) StudioEditFromCreate

func (e StudioEditDetailsInput) StudioEditFromCreate() StudioEditData

func (StudioEditDetailsInput) StudioEditFromDiff

func (e StudioEditDetailsInput) StudioEditFromDiff(orig Studio, inputArgs utils.ArgumentsQuery) (*StudioEditData, error)

func (StudioEditDetailsInput) StudioEditFromMerge

func (e StudioEditDetailsInput) StudioEditFromMerge(orig Studio, sources []uuid.UUID, inputArgs utils.ArgumentsQuery) (*StudioEditData, error)

type StudioEditInput

type StudioEditInput struct {
	Edit *EditInput `json:"edit"`
	// Not required for destroy type
	Details *StudioEditDetailsInput `json:"details,omitempty"`
}

type StudioEditResolver

type StudioEditResolver interface {
	Parent(ctx context.Context, obj *StudioEdit) (*Studio, error)
	AddedImages(ctx context.Context, obj *StudioEdit) ([]Image, error)
	RemovedImages(ctx context.Context, obj *StudioEdit) ([]Image, error)

	Images(ctx context.Context, obj *StudioEdit) ([]Image, error)
	Urls(ctx context.Context, obj *StudioEdit) ([]URL, error)
}

type StudioQueryInput

type StudioQueryInput struct {
	// Filter to search name - assumes like query unless quoted
	Name *string `json:"name,omitempty"`
	// Filter to search studio name, aliases and parent studio name - assumes like query unless quoted
	Names *string `json:"names,omitempty"`
	// Filter to search url - assumes like query unless quoted
	URL       *string           `json:"url,omitempty"`
	Parent    *IDCriterionInput `json:"parent,omitempty"`
	HasParent *bool             `json:"has_parent,omitempty"`
	// Filter by studio favorite status for the current user
	IsFavorite *bool             `json:"is_favorite,omitempty"`
	Page       int               `json:"page"`
	PerPage    int               `json:"per_page"`
	Direction  SortDirectionEnum `json:"direction"`
	Sort       StudioSortEnum    `json:"sort"`
}

type StudioResolver

type StudioResolver interface {
	Aliases(ctx context.Context, obj *Studio) ([]string, error)
	Urls(ctx context.Context, obj *Studio) ([]URL, error)
	Parent(ctx context.Context, obj *Studio) (*Studio, error)
	ChildStudios(ctx context.Context, obj *Studio) ([]Studio, error)
	Images(ctx context.Context, obj *Studio) ([]Image, error)

	IsFavorite(ctx context.Context, obj *Studio) (bool, error)
	Created(ctx context.Context, obj *Studio) (*time.Time, error)
	Updated(ctx context.Context, obj *Studio) (*time.Time, error)
	Performers(ctx context.Context, obj *Studio, input PerformerQueryInput) (*PerformerQuery, error)
}

type StudioSortEnum

type StudioSortEnum string
const (
	StudioSortEnumName      StudioSortEnum = "NAME"
	StudioSortEnumCreatedAt StudioSortEnum = "CREATED_AT"
	StudioSortEnumUpdatedAt StudioSortEnum = "UPDATED_AT"
)

func (StudioSortEnum) IsValid

func (e StudioSortEnum) IsValid() bool

func (StudioSortEnum) MarshalGQL

func (e StudioSortEnum) MarshalGQL(w io.Writer)

func (StudioSortEnum) MarshalJSON

func (e StudioSortEnum) MarshalJSON() ([]byte, error)

func (StudioSortEnum) String

func (e StudioSortEnum) String() string

func (*StudioSortEnum) UnmarshalGQL

func (e *StudioSortEnum) UnmarshalGQL(v any) error

func (*StudioSortEnum) UnmarshalJSON

func (e *StudioSortEnum) UnmarshalJSON(b []byte) error

type StudioUpdateInput

type StudioUpdateInput struct {
	ID       uuid.UUID   `json:"id"`
	Name     *string     `json:"name,omitempty"`
	Aliases  []string    `json:"aliases,omitempty"`
	Urls     []URL       `json:"urls,omitempty"`
	ParentID *uuid.UUID  `json:"parent_id,omitempty"`
	ImageIds []uuid.UUID `json:"image_ids,omitempty"`
}

type Tag

type Tag struct {
	ID          uuid.UUID `json:"id"`
	Name        string    `json:"name"`
	Description *string   `json:"description,omitempty"`
	Deleted     bool      `json:"deleted"`
	CategoryID  uuid.NullUUID
	Created     time.Time `json:"created"`
	Updated     time.Time `json:"updated"`
}

func (*Tag) CopyFromTagEdit

func (t *Tag) CopyFromTagEdit(input TagEdit, existing *TagEdit)

func (Tag) IsDeleted

func (t Tag) IsDeleted() bool

func (*Tag) IsEditTarget

func (t *Tag) IsEditTarget()

func (Tag) IsSceneDraftTag

func (Tag) IsSceneDraftTag()

func (*Tag) ValidateModifyEdit

func (t *Tag) ValidateModifyEdit(edit TagEditData) error

type TagCategory

type TagCategory struct {
	ID          uuid.UUID `json:"id"`
	Name        string    `json:"name"`
	Group       string    `json:"group"`
	Description *string   `json:"description"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

type TagCategoryCreateInput

type TagCategoryCreateInput struct {
	Name        string       `json:"name"`
	Group       TagGroupEnum `json:"group"`
	Description *string      `json:"description,omitempty"`
}

type TagCategoryDestroyInput

type TagCategoryDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type TagCategoryResolver

type TagCategoryResolver interface {
	Group(ctx context.Context, obj *TagCategory) (TagGroupEnum, error)
}

type TagCategoryUpdateInput

type TagCategoryUpdateInput struct {
	ID          uuid.UUID     `json:"id"`
	Name        *string       `json:"name,omitempty"`
	Group       *TagGroupEnum `json:"group,omitempty"`
	Description *string       `json:"description,omitempty"`
}

type TagCreateInput

type TagCreateInput struct {
	Name        string     `json:"name"`
	Description *string    `json:"description,omitempty"`
	Aliases     []string   `json:"aliases,omitempty"`
	CategoryID  *uuid.UUID `json:"category_id,omitempty"`
}

type TagDestroyInput

type TagDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type TagEdit

type TagEdit struct {
	EditID         uuid.UUID  `json:"-"`
	Name           *string    `json:"name,omitempty"`
	Description    *string    `json:"description,omitempty"`
	AddedAliases   []string   `json:"added_aliases,omitempty"`
	RemovedAliases []string   `json:"removed_aliases,omitempty"`
	CategoryID     *uuid.UUID `json:"category_id,omitempty"`
}

func (TagEdit) IsEditDetails

func (TagEdit) IsEditDetails()

type TagEditData

type TagEditData struct {
	New          *TagEdit    `json:"new_data,omitempty"`
	Old          *TagEdit    `json:"old_data,omitempty"`
	MergeSources []uuid.UUID `json:"merge_sources,omitempty"`
}

type TagEditDetailsInput

type TagEditDetailsInput struct {
	Name        *string    `json:"name,omitempty"`
	Description *string    `json:"description,omitempty"`
	Aliases     []string   `json:"aliases,omitempty"`
	CategoryID  *uuid.UUID `json:"category_id,omitempty"`
}

func (TagEditDetailsInput) TagEditFromCreate

func (e TagEditDetailsInput) TagEditFromCreate(inputArgs utils.ArgumentsQuery) TagEditData

func (TagEditDetailsInput) TagEditFromDiff

func (e TagEditDetailsInput) TagEditFromDiff(orig Tag, inputArgs utils.ArgumentsQuery) TagEditData

func (TagEditDetailsInput) TagEditFromMerge

func (e TagEditDetailsInput) TagEditFromMerge(orig Tag, sources []uuid.UUID, inputArgs utils.ArgumentsQuery) TagEditData

type TagEditInput

type TagEditInput struct {
	Edit *EditInput `json:"edit"`
	// Not required for destroy type
	Details *TagEditDetailsInput `json:"details,omitempty"`
}

type TagEditResolver

type TagEditResolver interface {
	Category(ctx context.Context, obj *TagEdit) (*TagCategory, error)
	Aliases(ctx context.Context, obj *TagEdit) ([]string, error)
}

type TagGroupEnum

type TagGroupEnum string
const (
	TagGroupEnumPeople TagGroupEnum = "PEOPLE"
	TagGroupEnumScene  TagGroupEnum = "SCENE"
	TagGroupEnumAction TagGroupEnum = "ACTION"
)

func (TagGroupEnum) IsValid

func (e TagGroupEnum) IsValid() bool

func (TagGroupEnum) MarshalGQL

func (e TagGroupEnum) MarshalGQL(w io.Writer)

func (TagGroupEnum) MarshalJSON

func (e TagGroupEnum) MarshalJSON() ([]byte, error)

func (TagGroupEnum) String

func (e TagGroupEnum) String() string

func (*TagGroupEnum) UnmarshalGQL

func (e *TagGroupEnum) UnmarshalGQL(v any) error

func (*TagGroupEnum) UnmarshalJSON

func (e *TagGroupEnum) UnmarshalJSON(b []byte) error

type TagQueryInput

type TagQueryInput struct {
	// Filter to search name, aliases and description - assumes like query unless quoted
	Text *string `json:"text,omitempty"`
	// Searches name and aliases - assumes like query unless quoted
	Names *string `json:"names,omitempty"`
	// Filter to search name - assumes like query unless quoted
	Name *string `json:"name,omitempty"`
	// Filter to category ID
	CategoryID *uuid.UUID        `json:"category_id,omitempty"`
	Page       int               `json:"page"`
	PerPage    int               `json:"per_page"`
	Direction  SortDirectionEnum `json:"direction"`
	Sort       TagSortEnum       `json:"sort"`
}

type TagResolver

type TagResolver interface {
	Aliases(ctx context.Context, obj *Tag) ([]string, error)

	Edits(ctx context.Context, obj *Tag) ([]Edit, error)
	Category(ctx context.Context, obj *Tag) (*TagCategory, error)
}

type TagSortEnum

type TagSortEnum string
const (
	TagSortEnumName      TagSortEnum = "NAME"
	TagSortEnumCreatedAt TagSortEnum = "CREATED_AT"
	TagSortEnumUpdatedAt TagSortEnum = "UPDATED_AT"
)

func (TagSortEnum) IsValid

func (e TagSortEnum) IsValid() bool

func (TagSortEnum) MarshalGQL

func (e TagSortEnum) MarshalGQL(w io.Writer)

func (TagSortEnum) MarshalJSON

func (e TagSortEnum) MarshalJSON() ([]byte, error)

func (TagSortEnum) String

func (e TagSortEnum) String() string

func (*TagSortEnum) UnmarshalGQL

func (e *TagSortEnum) UnmarshalGQL(v any) error

func (*TagSortEnum) UnmarshalJSON

func (e *TagSortEnum) UnmarshalJSON(b []byte) error

type TagUpdateInput

type TagUpdateInput struct {
	ID          uuid.UUID  `json:"id"`
	Name        *string    `json:"name,omitempty"`
	Description *string    `json:"description,omitempty"`
	Aliases     []string   `json:"aliases,omitempty"`
	CategoryID  *uuid.UUID `json:"category_id,omitempty"`
}

type TargetTypeEnum

type TargetTypeEnum string
const (
	TargetTypeEnumScene     TargetTypeEnum = "SCENE"
	TargetTypeEnumStudio    TargetTypeEnum = "STUDIO"
	TargetTypeEnumPerformer TargetTypeEnum = "PERFORMER"
	TargetTypeEnumTag       TargetTypeEnum = "TAG"
)

func (TargetTypeEnum) IsValid

func (e TargetTypeEnum) IsValid() bool

func (TargetTypeEnum) MarshalGQL

func (e TargetTypeEnum) MarshalGQL(w io.Writer)

func (TargetTypeEnum) MarshalJSON

func (e TargetTypeEnum) MarshalJSON() ([]byte, error)

func (TargetTypeEnum) String

func (e TargetTypeEnum) String() string

func (*TargetTypeEnum) UnmarshalGQL

func (e *TargetTypeEnum) UnmarshalGQL(v any) error

func (*TargetTypeEnum) UnmarshalJSON

func (e *TargetTypeEnum) UnmarshalJSON(b []byte) error

type URL

type URL struct {
	URL    string    `json:"url"`
	SiteID uuid.UUID `json:"site_id"`
}

type URLResolver

type URLResolver interface {
	Type(ctx context.Context, obj *URL) (string, error)
	Site(ctx context.Context, obj *URL) (*Site, error)
}

type UpdatedEdit

type UpdatedEdit struct {
	Edit *Edit `json:"edit"`
}

func (UpdatedEdit) IsNotificationData

func (UpdatedEdit) IsNotificationData()

type User

type User struct {
	ID           uuid.UUID     `json:"id"`
	Name         string        `json:"name"`
	PasswordHash string        `json:"password_hash"`
	Email        string        `json:"email"`
	APIKey       string        `json:"api_key"`
	APICalls     int           `json:"api_calls"`
	InviteTokens int           `json:"invite_tokens"`
	InvitedByID  uuid.NullUUID `json:"invited_by"`
	LastAPICall  time.Time     `json:"last_api_call"`
	CreatedAt    time.Time     `json:"created_at"`
	UpdatedAt    time.Time     `json:"updated_at"`
}

func (User) IsPasswordCorrect

func (p User) IsPasswordCorrect(pw string) bool

func (*User) SetPasswordHash

func (p *User) SetPasswordHash(pw string) error

type UserChangeEmailInput

type UserChangeEmailInput struct {
	ExistingEmailToken *uuid.UUID `json:"existing_email_token,omitempty"`
	NewEmailToken      *uuid.UUID `json:"new_email_token,omitempty"`
	NewEmail           *string    `json:"new_email,omitempty"`
}

type UserChangeEmailStatus

type UserChangeEmailStatus string
const (
	UserChangeEmailStatusConfirmOld   UserChangeEmailStatus = "CONFIRM_OLD"
	UserChangeEmailStatusConfirmNew   UserChangeEmailStatus = "CONFIRM_NEW"
	UserChangeEmailStatusExpired      UserChangeEmailStatus = "EXPIRED"
	UserChangeEmailStatusInvalidToken UserChangeEmailStatus = "INVALID_TOKEN"
	UserChangeEmailStatusSuccess      UserChangeEmailStatus = "SUCCESS"
	UserChangeEmailStatusError        UserChangeEmailStatus = "ERROR"
)

func (UserChangeEmailStatus) IsValid

func (e UserChangeEmailStatus) IsValid() bool

func (UserChangeEmailStatus) MarshalGQL

func (e UserChangeEmailStatus) MarshalGQL(w io.Writer)

func (UserChangeEmailStatus) MarshalJSON

func (e UserChangeEmailStatus) MarshalJSON() ([]byte, error)

func (UserChangeEmailStatus) String

func (e UserChangeEmailStatus) String() string

func (*UserChangeEmailStatus) UnmarshalGQL

func (e *UserChangeEmailStatus) UnmarshalGQL(v any) error

func (*UserChangeEmailStatus) UnmarshalJSON

func (e *UserChangeEmailStatus) UnmarshalJSON(b []byte) error

type UserChangePasswordInput

type UserChangePasswordInput struct {
	// Password in plain text
	ExistingPassword *string    `json:"existing_password,omitempty"`
	NewPassword      string     `json:"new_password"`
	ResetKey         *uuid.UUID `json:"reset_key,omitempty"`
}

type UserCreateInput

type UserCreateInput struct {
	Name string `json:"name"`
	// Password in plain text
	Password    string     `json:"password"`
	Roles       []RoleEnum `json:"roles"`
	Email       string     `json:"email"`
	InvitedByID *uuid.UUID `json:"invited_by_id,omitempty"`
}

type UserDestroyInput

type UserDestroyInput struct {
	ID uuid.UUID `json:"id"`
}

type UserEditCount

type UserEditCount struct {
	Accepted          int `json:"accepted"`
	Rejected          int `json:"rejected"`
	Pending           int `json:"pending"`
	ImmediateAccepted int `json:"immediate_accepted"`
	ImmediateRejected int `json:"immediate_rejected"`
	Failed            int `json:"failed"`
	Canceled          int `json:"canceled"`
}

type UserQueryInput

type UserQueryInput struct {
	// Filter to search user name - assumes like query unless quoted
	Name *string `json:"name,omitempty"`
	// Filter to search email - assumes like query unless quoted
	Email *string `json:"email,omitempty"`
	// Filter by roles
	Roles *RoleCriterionInput `json:"roles,omitempty"`
	// Filter by api key
	APIKey *string `json:"apiKey,omitempty"`
	// Filter by successful edits
	SuccessfulEdits *IntCriterionInput `json:"successful_edits,omitempty"`
	// Filter by unsuccessful edits
	UnsuccessfulEdits *IntCriterionInput `json:"unsuccessful_edits,omitempty"`
	// Filter by votes on successful edits
	SuccessfulVotes *IntCriterionInput `json:"successful_votes,omitempty"`
	// Filter by votes on unsuccessful edits
	UnsuccessfulVotes *IntCriterionInput `json:"unsuccessful_votes,omitempty"`
	// Filter by number of API calls
	APICalls *IntCriterionInput `json:"api_calls,omitempty"`
	// Filter by user that invited
	InvitedBy *uuid.UUID `json:"invited_by,omitempty"`
	Page      int        `json:"page"`
	PerPage   int        `json:"per_page"`
}

type UserResolver

type UserResolver interface {
	Roles(ctx context.Context, obj *User) ([]RoleEnum, error)

	NotificationSubscriptions(ctx context.Context, obj *User) ([]NotificationEnum, error)
	VoteCount(ctx context.Context, obj *User) (*UserVoteCount, error)
	EditCount(ctx context.Context, obj *User) (*UserEditCount, error)

	InvitedBy(ctx context.Context, obj *User) (*User, error)

	ActiveInviteCodes(ctx context.Context, obj *User) ([]string, error)
	InviteCodes(ctx context.Context, obj *User) ([]InviteKey, error)
}

type UserToken

type UserToken struct {
	ID        uuid.UUID       `json:"id"`
	Data      json.RawMessage `json:"data"`
	Type      string          `json:"type"`
	CreatedAt time.Time       `json:"created_at"`
	ExpiresAt time.Time       `json:"expires_at"`
}

func (*UserToken) GetChangeEmailTokenData

func (t *UserToken) GetChangeEmailTokenData() (*ChangeEmailTokenData, error)

func (*UserToken) GetNewUserTokenData

func (t *UserToken) GetNewUserTokenData() (*NewUserTokenData, error)

func (*UserToken) GetUserTokenData

func (t *UserToken) GetUserTokenData() (*UserTokenData, error)

func (*UserToken) SetData

func (t *UserToken) SetData(data interface{}) error

type UserTokenData

type UserTokenData struct {
	UserID uuid.UUID `json:"user_id"`
}

type UserUpdateInput

type UserUpdateInput struct {
	ID   uuid.UUID `json:"id"`
	Name *string   `json:"name,omitempty"`
	// Password in plain text
	Password *string    `json:"password,omitempty"`
	Roles    []RoleEnum `json:"roles,omitempty"`
	Email    *string    `json:"email,omitempty"`
}

type UserVoteCount

type UserVoteCount struct {
	Abstain         int `json:"abstain"`
	Accept          int `json:"accept"`
	Reject          int `json:"reject"`
	ImmediateAccept int `json:"immediate_accept"`
	ImmediateReject int `json:"immediate_reject"`
}

type UserVotedFilterEnum

type UserVotedFilterEnum string
const (
	UserVotedFilterEnumAbstain  UserVotedFilterEnum = "ABSTAIN"
	UserVotedFilterEnumAccept   UserVotedFilterEnum = "ACCEPT"
	UserVotedFilterEnumReject   UserVotedFilterEnum = "REJECT"
	UserVotedFilterEnumNotVoted UserVotedFilterEnum = "NOT_VOTED"
)

func (UserVotedFilterEnum) IsValid

func (e UserVotedFilterEnum) IsValid() bool

func (UserVotedFilterEnum) MarshalGQL

func (e UserVotedFilterEnum) MarshalGQL(w io.Writer)

func (UserVotedFilterEnum) MarshalJSON

func (e UserVotedFilterEnum) MarshalJSON() ([]byte, error)

func (UserVotedFilterEnum) String

func (e UserVotedFilterEnum) String() string

func (*UserVotedFilterEnum) UnmarshalGQL

func (e *UserVotedFilterEnum) UnmarshalGQL(v any) error

func (*UserVotedFilterEnum) UnmarshalJSON

func (e *UserVotedFilterEnum) UnmarshalJSON(b []byte) error

type ValidSiteTypeEnum

type ValidSiteTypeEnum string
const (
	ValidSiteTypeEnumPerformer ValidSiteTypeEnum = "PERFORMER"
	ValidSiteTypeEnumScene     ValidSiteTypeEnum = "SCENE"
	ValidSiteTypeEnumStudio    ValidSiteTypeEnum = "STUDIO"
)

func (ValidSiteTypeEnum) IsValid

func (e ValidSiteTypeEnum) IsValid() bool

func (ValidSiteTypeEnum) MarshalGQL

func (e ValidSiteTypeEnum) MarshalGQL(w io.Writer)

func (ValidSiteTypeEnum) MarshalJSON

func (e ValidSiteTypeEnum) MarshalJSON() ([]byte, error)

func (ValidSiteTypeEnum) String

func (e ValidSiteTypeEnum) String() string

func (*ValidSiteTypeEnum) UnmarshalGQL

func (e *ValidSiteTypeEnum) UnmarshalGQL(v any) error

func (*ValidSiteTypeEnum) UnmarshalJSON

func (e *ValidSiteTypeEnum) UnmarshalJSON(b []byte) error

type Version

type Version struct {
	Hash      string `json:"hash"`
	BuildTime string `json:"build_time"`
	BuildType string `json:"build_type"`
	Version   string `json:"version"`
}

type VoteStatusEnum

type VoteStatusEnum string
const (
	VoteStatusEnumAccepted          VoteStatusEnum = "ACCEPTED"
	VoteStatusEnumRejected          VoteStatusEnum = "REJECTED"
	VoteStatusEnumPending           VoteStatusEnum = "PENDING"
	VoteStatusEnumImmediateAccepted VoteStatusEnum = "IMMEDIATE_ACCEPTED"
	VoteStatusEnumImmediateRejected VoteStatusEnum = "IMMEDIATE_REJECTED"
	VoteStatusEnumFailed            VoteStatusEnum = "FAILED"
	VoteStatusEnumCanceled          VoteStatusEnum = "CANCELED"
)

func (VoteStatusEnum) IsValid

func (e VoteStatusEnum) IsValid() bool

func (VoteStatusEnum) MarshalGQL

func (e VoteStatusEnum) MarshalGQL(w io.Writer)

func (VoteStatusEnum) MarshalJSON

func (e VoteStatusEnum) MarshalJSON() ([]byte, error)

func (VoteStatusEnum) String

func (e VoteStatusEnum) String() string

func (*VoteStatusEnum) UnmarshalGQL

func (e *VoteStatusEnum) UnmarshalGQL(v any) error

func (*VoteStatusEnum) UnmarshalJSON

func (e *VoteStatusEnum) UnmarshalJSON(b []byte) error

type VoteTypeEnum

type VoteTypeEnum string
const (
	VoteTypeEnumAbstain VoteTypeEnum = "ABSTAIN"
	VoteTypeEnumAccept  VoteTypeEnum = "ACCEPT"
	VoteTypeEnumReject  VoteTypeEnum = "REJECT"
	// Immediately accepts the edit - bypassing the vote
	VoteTypeEnumImmediateAccept VoteTypeEnum = "IMMEDIATE_ACCEPT"
	// Immediately rejects the edit - bypassing the vote
	VoteTypeEnumImmediateReject VoteTypeEnum = "IMMEDIATE_REJECT"
)

func (VoteTypeEnum) IsValid

func (e VoteTypeEnum) IsValid() bool

func (VoteTypeEnum) MarshalGQL

func (e VoteTypeEnum) MarshalGQL(w io.Writer)

func (VoteTypeEnum) MarshalJSON

func (e VoteTypeEnum) MarshalJSON() ([]byte, error)

func (VoteTypeEnum) String

func (e VoteTypeEnum) String() string

func (*VoteTypeEnum) UnmarshalGQL

func (e *VoteTypeEnum) UnmarshalGQL(v any) error

func (*VoteTypeEnum) UnmarshalJSON

func (e *VoteTypeEnum) UnmarshalJSON(b []byte) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL