graph

package
v0.0.0-...-175e951 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2025 License: AGPL-3.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CaptchaProtected

func CaptchaProtected(r *Resolver) func(ctx context.Context, obj interface{}, next graphql.Resolver, action string) (interface{}, error)

func GenerateGqlCode

func GenerateGqlCode()

func IsAuthenticated

func IsAuthenticated(r *Resolver) func(ctx context.Context, obj interface{}, next graphql.Resolver) (interface{}, error)

func IsSiteOwner

func IsSiteOwner(r *Resolver) func(ctx context.Context, obj interface{}, next graphql.Resolver) (interface{}, error)

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

func NewLoadersMiddleware

func NewLoadersMiddleware(
	identityRepo identity.IdentityRepo,
	storageDefRepo storage.StorageDefRepo,
	storedImageRepo storage.StoredImageRepo,
) func(next http.Handler) http.Handler

Types

type ComplexityRoot

type ComplexityRoot struct {
	DeleteImageResult struct {
		ID func(childComplexity int) int
	}

	FSStorageConfig struct {
		MediaRoot func(childComplexity int) int
	}

	Image struct {
		CreatedAt       func(childComplexity int) int
		ID              func(childComplexity int) int
		Identifier      func(childComplexity int) int
		MIMEType        func(childComplexity int) int
		Name            func(childComplexity int) int
		NominalByteSize func(childComplexity int) int
		NominalHeight   func(childComplexity int) int
		NominalWidth    func(childComplexity int) int
		Revisions       func(childComplexity int) int
		Root            func(childComplexity int) int
		StoredImages    func(childComplexity int) int
		URL             func(childComplexity int) int
	}

	ImageEdge struct {
		Cursor func(childComplexity int) int
		Node   func(childComplexity int) int
	}

	ImagePageInfo struct {
		CurrentCount    func(childComplexity int) int
		EndCursor       func(childComplexity int) int
		HasNextPage     func(childComplexity int) int
		HasPreviousPage func(childComplexity int) int
		StartCursor     func(childComplexity int) int
		TotalCount      func(childComplexity int) int
	}

	ImagesResult struct {
		Edges    func(childComplexity int) int
		PageInfo func(childComplexity int) int
	}

	Mutation struct {
		Authenticate                       func(childComplexity int, email string, password string, organizationID *string) int
		CheckStorageDefinitionConnectivity func(childComplexity int, input model.CheckStorageDefinitionConnectivityInput) int
		CreateStorageDefinition            func(childComplexity int, input model.CreateStorageDefinitionInput) int
		CreateUserWithOrganization         func(childComplexity int, input model.CreateUserWithOrganizationInput) int
		DeleteImage                        func(childComplexity int, input model.DeleteImageInput) int
		Logout                             func(childComplexity int) int
		ResetPassword                      func(childComplexity int, input model.ResetPasswordInput) int
		SendResetPasswordEmail             func(childComplexity int, input model.SendResetPasswordEmailInput) int
		UpdateStorageDefinition            func(childComplexity int, input model.UpdateStorageDefinitionInput) int
	}

	Organization struct {
		ID   func(childComplexity int) int
		Name func(childComplexity int) int
		Slug func(childComplexity int) int
	}

	OrganizationUser struct {
		ID           func(childComplexity int) int
		Organization func(childComplexity int) int
		Roles        func(childComplexity int) int
		User         func(childComplexity int) int
	}

	OtherStorageConfig struct {
		Empty func(childComplexity int) int
	}

	PageInfo struct {
		HasNextPage     func(childComplexity int) int
		HasPreviousPage func(childComplexity int) int
		TotalCount      func(childComplexity int) int
	}

	PaginatedUsers struct {
		Nodes    func(childComplexity int) int
		PageInfo func(childComplexity int) int
	}

	Query struct {
		Viewer func(childComplexity int) int
	}

	ResetPasswordResult struct {
		Success func(childComplexity int) int
	}

	Role struct {
		Key  func(childComplexity int) int
		Name func(childComplexity int) int
	}

	S3StorageConfig struct {
		Access   func(childComplexity int) int
		Bucket   func(childComplexity int) int
		Endpoint func(childComplexity int) int
		Secret   func(childComplexity int) int
	}

	SendResetPasswordEmailResult struct {
		Success func(childComplexity int) int
	}

	StorageDefinition struct {
		Config       func(childComplexity int) int
		Connectivity func(childComplexity int) int
		Id           func(childComplexity int) int
		Identifier   func(childComplexity int) int
		IsEnabled    func(childComplexity int) int
		Priority     func(childComplexity int) int
	}

	StorageDefinitionConnectivityResult struct {
		Error func(childComplexity int) int
		Ok    func(childComplexity int) int
	}

	StoredImage struct {
		FileIdentifier    func(childComplexity int) int
		ID                func(childComplexity int) int
		StorageDefinition func(childComplexity int) int
	}

	User struct {
		Email func(childComplexity int) int
		ID    func(childComplexity int) int
		Name  func(childComplexity int) int
	}

	UserWithOrganizationUsers struct {
		Email             func(childComplexity int) int
		ID                func(childComplexity int) int
		OrganizationUsers func(childComplexity int) int
	}

	Viewer struct {
		AllUsers             func(childComplexity int, limit *int, offset *int, search *string) int
		GetStorageDefinition func(childComplexity int, id string) int
		HasPermission        func(childComplexity int, permission model.PermissionNameEnum) int
		ID                   func(childComplexity int) int
		Images               func(childComplexity int, orderBy *model.ImageOrderByInput, filters *model.ImageFilterInput, after *string, before *string) int
		OrganizationUser     func(childComplexity int) int
		PaginatedAllUsers    func(childComplexity int, limit *int, offset *int, search *string) int
		StorageDefinitions   func(childComplexity int) int
	}

	ViewerResult struct {
		Viewer func(childComplexity int) int
	}

	WebDAVStorageConfig struct {
		Password   func(childComplexity int) int
		PathPrefix func(childComplexity int) int
		URL        func(childComplexity int) int
		Username   func(childComplexity int) int
	}
}

type Config

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

type DirectiveRoot

type DirectiveRoot struct {
	CaptchaProtected func(ctx context.Context, obj any, next graphql.Resolver, action string) (res any, err error)
	IsAuthenticated  func(ctx context.Context, obj any, next graphql.Resolver) (res any, err error)
	IsSiteOwner      func(ctx context.Context, obj any, next graphql.Resolver) (res any, err error)
}

type ImageResolver

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

	Root(ctx context.Context, obj *model.Image) (*model.Image, error)
	Revisions(ctx context.Context, obj *model.Image) ([]*model.Image, error)

	StoredImages(ctx context.Context, obj *model.Image) ([]*model.StoredImage, error)
}

type Loaders

type Loaders struct {
	UserLoader                   *dataloadgen.Loader[string, *model.User]
	OrganizationUserLoader       *dataloadgen.Loader[string, *model.OrganizationUser]
	StoredImagesLoader           *dataloadgen.Loader[string, *model.StoredImage]
	StoredImagesByImageIdsLoader *dataloadgen.Loader[string, []*model.StoredImage]
	StorageDefinitionsLoader     *dataloadgen.Loader[string, *model.StorageDefinition]
}

func LoadersFor

func LoadersFor(ctx context.Context) *Loaders

func NewLoaders

func NewLoaders(identityRepo identity.IdentityRepo, storageDefRepo storage.StorageDefRepo, storedImageRepo storage.StoredImageRepo) *Loaders

type MutationResolver

type MutationResolver interface {
	Authenticate(ctx context.Context, email string, password string, organizationID *string) (*model.ViewerResult, error)
	Logout(ctx context.Context) (*model.ViewerResult, error)
	CreateUserWithOrganization(ctx context.Context, input model.CreateUserWithOrganizationInput) (*model.ViewerResult, error)
	SendResetPasswordEmail(ctx context.Context, input model.SendResetPasswordEmailInput) (*model.SendResetPasswordEmailResult, error)
	ResetPassword(ctx context.Context, input model.ResetPasswordInput) (*model.ResetPasswordResult, error)
	DeleteImage(ctx context.Context, input model.DeleteImageInput) (*model.DeleteImageResult, error)
	CreateStorageDefinition(ctx context.Context, input model.CreateStorageDefinitionInput) (*model.StorageDefinition, error)
	UpdateStorageDefinition(ctx context.Context, input model.UpdateStorageDefinitionInput) (*model.StorageDefinition, error)
	CheckStorageDefinitionConnectivity(ctx context.Context, input model.CheckStorageDefinitionConnectivityInput) (*model.StorageDefinitionConnectivityResult, error)
}

type QueryResolver

type QueryResolver interface {
	Viewer(ctx context.Context) (*model.Viewer, error)
}

type Resolver

type Resolver struct {
	IdentityRepo       identity.IdentityRepo
	StorageDefRepo     storage.StorageDefRepo
	ImageRepo          image.ImageRepo
	ContextUserManager identity.ContextUserManager
	LoginFn            func(c context.Context, userId string, organizationUserId string)
	LogoutFn           func(c context.Context)
	ImageDomain        string
	DefaultURLFormat   domainmodels.ImageURLFormat
	IsHttps            func(c context.Context) bool
	GetBaseURL         func(c context.Context) *url.URL
	GetEmailBackend    func(c context.Context) email.EmailBackend
	SecretKey          string
	CaptchaClient      captcha.CaptchaClient
	AllowNewUser       bool
}

func (*Resolver) Image

func (r *Resolver) Image() ImageResolver

Image returns ImageResolver implementation.

func (*Resolver) Mutation

func (r *Resolver) Mutation() MutationResolver

Mutation returns MutationResolver implementation.

func (*Resolver) Query

func (r *Resolver) Query() QueryResolver

Query returns QueryResolver implementation.

func (*Resolver) StorageDefinition

func (r *Resolver) StorageDefinition() StorageDefinitionResolver

StorageDefinition returns StorageDefinitionResolver implementation.

func (*Resolver) Viewer

func (r *Resolver) Viewer() ViewerResolver

Viewer returns ViewerResolver implementation.

type ResolverRoot

type ResolverRoot interface {
	Image() ImageResolver
	Mutation() MutationResolver
	Query() QueryResolver
	StorageDefinition() StorageDefinitionResolver
	Viewer() ViewerResolver
}

type StorageDefinitionResolver

type StorageDefinitionResolver interface {
	Connectivity(ctx context.Context, obj *model.StorageDefinition) (bool, error)
}

type ViewerResolver

type ViewerResolver interface {
	ID(ctx context.Context, obj *model.Viewer) (string, error)
	OrganizationUser(ctx context.Context, obj *model.Viewer) (*model.OrganizationUser, error)
	Images(ctx context.Context, obj *model.Viewer, orderBy *model.ImageOrderByInput, filters *model.ImageFilterInput, after *string, before *string) (*model.ImagesResult, error)
	HasPermission(ctx context.Context, obj *model.Viewer, permission model.PermissionNameEnum) (bool, error)
	StorageDefinitions(ctx context.Context, obj *model.Viewer) ([]*model.StorageDefinition, error)
	GetStorageDefinition(ctx context.Context, obj *model.Viewer, id string) (*model.StorageDefinition, error)
	AllUsers(ctx context.Context, obj *model.Viewer, limit *int, offset *int, search *string) ([]*model.User, error)
	PaginatedAllUsers(ctx context.Context, obj *model.Viewer, limit *int, offset *int, search *string) (*model.PaginatedUsers, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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