graph

package
v0.0.0-...-13d4585 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2026 License: AGPL-3.0 Imports: 32 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,
	imageRepo image.ImageRepo,
	imageRelRepo image.ImageRelationshipRepo,
) func(next http.Handler) http.Handler

Types

type ComplexityRoot

type ComplexityRoot struct {
	ApplyBlurResult struct {
		Image func(childComplexity int) int
	}

	ApplyWatermarkResult struct {
		Image func(childComplexity int) int
	}

	DeleteImageResult struct {
		ID func(childComplexity int) int
	}

	FSStorageConfig struct {
		MediaRoot func(childComplexity int) int
	}

	IPFSMFSStorageConfig struct {
		ApiUrl     func(childComplexity int) int
		PathPrefix func(childComplexity int) int
		Pin        func(childComplexity int) int
	}

	Image struct {
		Changes         func(childComplexity int) int
		CreatedAt       func(childComplexity int) int
		CreatedBy       func(childComplexity int) int
		ID              func(childComplexity int) int
		Identifier      func(childComplexity int) int
		Lineage         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
		Parent          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 {
		ApplyBlur                          func(childComplexity int, input model.ApplyBlurInput) int
		ApplyWatermark                     func(childComplexity int, input model.ApplyWatermarkInput) int
		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 {
		PublicImage func(childComplexity int, id string) int
		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 {
		AvatarURL func(childComplexity int) int
		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
		Image                func(childComplexity int, id string) int
		Images               func(childComplexity int, orderBy *model.ImageOrderByInput, filters *model.ImageFilterInput, after *string, before *string) int
		OrganizationUser     func(childComplexity int) int
		OrganizationUserByID func(childComplexity int, id string) int
		PaginatedAllUsers    func(childComplexity int, limit *int, offset *int, search *string) int
		StorageDefinitions   func(childComplexity int) int
		UploadLimitBytes     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 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)
	Parent(ctx context.Context, obj *model.Image) (*model.Image, error)
	Changes(ctx context.Context, obj *model.Image) (*string, error)
	Lineage(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)

	CreatedBy(ctx context.Context, obj *model.Image) (*model.OrganizationUser, 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]
	BaseParentByImageIdLoader    *dataloadgen.Loader[string, *model.Image]
}

func LoadersFor

func LoadersFor(ctx context.Context) *Loaders

func NewLoaders

func NewLoaders(identityRepo identity.IdentityRepo, storageDefRepo storage.StorageDefRepo, storedImageRepo storage.StoredImageRepo, imageRepo image.ImageRepo, imageRelRepo image.ImageRelationshipRepo) *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)
	ApplyWatermark(ctx context.Context, input model.ApplyWatermarkInput) (*model.ApplyWatermarkResult, error)
	ApplyBlur(ctx context.Context, input model.ApplyBlurInput) (*model.ApplyBlurResult, 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)
	PublicImage(ctx context.Context, id string) (*model.Image, error)
}

type Resolver

type Resolver struct {
	DBConn                   *sql.DB
	IdentityRepo             identity.IdentityRepo
	StorageDefRepo           storage.StorageDefRepo
	StoredImageRepo          storage.StoredImageRepo
	ImageRepo                image.ImageRepo
	ImageRelRepo             image.ImageRelationshipRepo
	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
	ImageMaxUploadBytes      int64
	GuestImageMaxUploadBytes int64
}

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) User

func (r *Resolver) User() UserResolver

User returns UserResolver 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
	User() UserResolver
	Viewer() ViewerResolver
}

type StorageDefinitionResolver

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

type UserResolver

type UserResolver interface {
	AvatarURL(ctx context.Context, obj *model.User) (string, 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)
	OrganizationUserByID(ctx context.Context, obj *model.Viewer, id string) (*model.OrganizationUser, error)
	UploadLimitBytes(ctx context.Context, obj *model.Viewer) (int, error)
	Image(ctx context.Context, obj *model.Viewer, id string) (*model.Image, 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