graphapi

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Jan 17, 2024 License: Apache-2.0 Imports: 32 Imported by: 0

Documentation

Overview

Package graphapi provides the graph api handler and resolver for metadata api

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInternalServerError is returned when an internal error occurs.
	ErrInternalServerError = errors.New("internal server error")

	// ErrFieldEmpty is returned when a required field is empty.
	ErrFieldEmpty = errors.New("must not be empty")

	// ErrInvalidJSON is returned when invalid json is provided.
	ErrInvalidJSON = errors.New("invalid json data")

	// ErrUniquenessConstraint is returned when an input field must be unique.
	ErrUniquenessConstraint = errors.New("must be unique")

	// ErrNamespaceInUse is returned when a namespace is in use and can't be deleted.
	ErrNamespaceInUse = errors.New("namespace is in use and can't be deleted")
)
View Source
var (
	ErrUnknownType  = errors.New("unknown type")
	ErrTypeNotFound = errors.New("type not found")
)

Functions

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

Types

type AnnotationDeleteInput

type AnnotationDeleteInput struct {
	// The node ID for this annotation.
	NodeID gidx.PrefixedID `json:"nodeID"`
	// The namespace ID for this annotation.
	NamespaceID gidx.PrefixedID `json:"namespaceID"`
}

Input information to delete an annotation.

type AnnotationDeleteResponse

type AnnotationDeleteResponse struct {
	// The ID of the unset annotation.
	DeletedID gidx.PrefixedID `json:"deletedID"`
}

Return response from annotationDelete

type AnnotationNamespaceCreatePayload

type AnnotationNamespaceCreatePayload struct {
	// The created annotation namespace.
	AnnotationNamespace *generated.AnnotationNamespace `json:"annotationNamespace"`
}

Return response from annotationNamespaceCreate

type AnnotationNamespaceDeletePayload

type AnnotationNamespaceDeletePayload struct {
	// The ID of the deleted annotation namespace.
	DeletedID gidx.PrefixedID `json:"deletedID"`
	// The count of annotations deleted
	AnnotationDeletedCount int `json:"annotationDeletedCount"`
}

Return response from annotationNamespaceDelete

type AnnotationNamespaceResolver

type AnnotationNamespaceResolver interface {
	Owner(ctx context.Context, obj *generated.AnnotationNamespace) (*ResourceOwner, error)
}

type AnnotationNamespaceUpdatePayload

type AnnotationNamespaceUpdatePayload struct {
	// The updated annotation namespace.
	AnnotationNamespace *generated.AnnotationNamespace `json:"annotationNamespace"`
}

Return response from annotationNamespaceUpdate

type AnnotationUpdateInput

type AnnotationUpdateInput struct {
	// The node ID for this annotation.
	NodeID gidx.PrefixedID `json:"nodeID"`
	// The namespace ID for this annotation.
	NamespaceID gidx.PrefixedID `json:"namespaceID"`
	// The data to save in this annotation.
	Data json.RawMessage `json:"data"`
}

Input information to update an annotation.

type AnnotationUpdateResponse

type AnnotationUpdateResponse struct {
	// The set annotation.
	Annotation *generated.Annotation `json:"annotation"`
}

Return response from annotationUpdate

type ComplexityRoot

type ComplexityRoot struct {
	Annotation struct {
		CreatedAt  func(childComplexity int) int
		Data       func(childComplexity int) int
		ID         func(childComplexity int) int
		Metadata   func(childComplexity int) int
		MetadataID func(childComplexity int) int
		Namespace  func(childComplexity int) int
		UpdatedAt  func(childComplexity int) int
	}

	AnnotationConnection struct {
		Edges      func(childComplexity int) int
		PageInfo   func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	AnnotationDeleteResponse struct {
		DeletedID func(childComplexity int) int
	}

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

	AnnotationNamespace struct {
		Annotations func(childComplexity int) int
		CreatedAt   func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
		Owner       func(childComplexity int) int
		Private     func(childComplexity int) int
		UpdatedAt   func(childComplexity int) int
	}

	AnnotationNamespaceConnection struct {
		Edges      func(childComplexity int) int
		PageInfo   func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	AnnotationNamespaceCreatePayload struct {
		AnnotationNamespace func(childComplexity int) int
	}

	AnnotationNamespaceDeletePayload struct {
		AnnotationDeletedCount func(childComplexity int) int
		DeletedID              func(childComplexity int) int
	}

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

	AnnotationNamespaceUpdatePayload struct {
		AnnotationNamespace func(childComplexity int) int
	}

	AnnotationUpdateResponse struct {
		Annotation func(childComplexity int) int
	}

	Entity struct {
		FindAnnotationByID          func(childComplexity int, id gidx.PrefixedID) int
		FindAnnotationNamespaceByID func(childComplexity int, id gidx.PrefixedID) int
		FindMetadataByID            func(childComplexity int, id gidx.PrefixedID) int
		FindMetadataByNodeID        func(childComplexity int, nodeID gidx.PrefixedID) int
		FindMetadataNodeByID        func(childComplexity int, id gidx.PrefixedID) int
		FindResourceOwnerByID       func(childComplexity int, id gidx.PrefixedID) int
		FindStatusByID              func(childComplexity int, id gidx.PrefixedID) int
		FindStatusNamespaceByID     func(childComplexity int, id gidx.PrefixedID) int
		FindStatusOwnerByID         func(childComplexity int, id gidx.PrefixedID) int
	}

	Metadata struct {
		Annotations func(childComplexity int, after *entgql.Cursor[gidx.PrefixedID], first *int, before *entgql.Cursor[gidx.PrefixedID], last *int, orderBy *generated.AnnotationOrder, where *generated.AnnotationWhereInput) int
		CreatedAt   func(childComplexity int) int
		ID          func(childComplexity int) int
		Node        func(childComplexity int) int
		NodeID      func(childComplexity int) int
		Statuses    func(childComplexity int, after *entgql.Cursor[gidx.PrefixedID], first *int, before *entgql.Cursor[gidx.PrefixedID], last *int, orderBy *generated.StatusOrder, where *generated.StatusWhereInput) int
		UpdatedAt   func(childComplexity int) int
	}

	MetadataConnection struct {
		Edges      func(childComplexity int) int
		PageInfo   func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

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

	MetadataNode struct {
		ID       func(childComplexity int) int
		Metadata func(childComplexity int) int
	}

	Mutation struct {
		AnnotationDelete          func(childComplexity int, input AnnotationDeleteInput) int
		AnnotationNamespaceCreate func(childComplexity int, input generated.CreateAnnotationNamespaceInput) int
		AnnotationNamespaceDelete func(childComplexity int, id gidx.PrefixedID, force bool) int
		AnnotationNamespaceUpdate func(childComplexity int, id gidx.PrefixedID, input generated.UpdateAnnotationNamespaceInput) int
		AnnotationUpdate          func(childComplexity int, input AnnotationUpdateInput) int
		StatusDelete              func(childComplexity int, input StatusDeleteInput) int
		StatusNamespaceCreate     func(childComplexity int, input generated.CreateStatusNamespaceInput) int
		StatusNamespaceDelete     func(childComplexity int, id gidx.PrefixedID, force bool) int
		StatusNamespaceUpdate     func(childComplexity int, id gidx.PrefixedID, input generated.UpdateStatusNamespaceInput) int
		StatusUpdate              func(childComplexity int, input StatusUpdateInput) int
	}

	PageInfo struct {
		EndCursor       func(childComplexity int) int
		HasNextPage     func(childComplexity int) int
		HasPreviousPage func(childComplexity int) int
		StartCursor     func(childComplexity int) int
	}

	Query struct {
		AnnotationNamespace func(childComplexity int, id gidx.PrefixedID) int
		// contains filtered or unexported fields
	}

	ResourceOwner struct {
		AnnotationNamespaces func(childComplexity int, after *entgql.Cursor[gidx.PrefixedID], first *int, before *entgql.Cursor[gidx.PrefixedID], last *int, orderBy *generated.AnnotationNamespaceOrder, where *generated.AnnotationNamespaceWhereInput) int
		ID                   func(childComplexity int) int
		Metadata             func(childComplexity int) int
	}

	Status struct {
		CreatedAt         func(childComplexity int) int
		Data              func(childComplexity int) int
		ID                func(childComplexity int) int
		Metadata          func(childComplexity int) int
		MetadataID        func(childComplexity int) int
		Namespace         func(childComplexity int) int
		Source            func(childComplexity int) int
		StatusNamespaceID func(childComplexity int) int
		UpdatedAt         func(childComplexity int) int
	}

	StatusConnection struct {
		Edges      func(childComplexity int) int
		PageInfo   func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	StatusDeleteResponse struct {
		DeletedID func(childComplexity int) int
	}

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

	StatusNamespace struct {
		CreatedAt func(childComplexity int) int
		ID        func(childComplexity int) int
		Name      func(childComplexity int) int
		Owner     func(childComplexity int) int
		Private   func(childComplexity int) int
		UpdatedAt func(childComplexity int) int
	}

	StatusNamespaceConnection struct {
		Edges      func(childComplexity int) int
		PageInfo   func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	StatusNamespaceCreatePayload struct {
		StatusNamespace func(childComplexity int) int
	}

	StatusNamespaceDeletePayload struct {
		DeletedID          func(childComplexity int) int
		StatusDeletedCount func(childComplexity int) int
	}

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

	StatusNamespaceUpdatePayload struct {
		StatusNamespace func(childComplexity int) int
	}

	StatusOwner struct {
		ID               func(childComplexity int) int
		Metadata         func(childComplexity int) int
		StatusNamespaces func(childComplexity int, after *entgql.Cursor[gidx.PrefixedID], first *int, before *entgql.Cursor[gidx.PrefixedID], last *int, orderBy *generated.StatusNamespaceOrder, where *generated.StatusNamespaceWhereInput) int
	}

	StatusUpdateResponse struct {
		Status func(childComplexity int) int
	}
	// contains filtered or unexported fields
}

type Config

type Config struct {
	Resolvers  ResolverRoot
	Directives DirectiveRoot
	Complexity ComplexityRoot
}

type DirectiveRoot

type DirectiveRoot struct {
	ComposeDirective func(ctx context.Context, obj interface{}, next graphql.Resolver, name string) (res interface{}, err error)
}

type EntityResolver

type EntityResolver interface {
	FindAnnotationByID(ctx context.Context, id gidx.PrefixedID) (*generated.Annotation, error)
	FindAnnotationNamespaceByID(ctx context.Context, id gidx.PrefixedID) (*generated.AnnotationNamespace, error)
	FindMetadataByID(ctx context.Context, id gidx.PrefixedID) (*generated.Metadata, error)
	FindMetadataByNodeID(ctx context.Context, nodeID gidx.PrefixedID) (*generated.Metadata, error)
	FindMetadataNodeByID(ctx context.Context, id gidx.PrefixedID) (*MetadataNode, error)
	FindResourceOwnerByID(ctx context.Context, id gidx.PrefixedID) (*ResourceOwner, error)
	FindStatusByID(ctx context.Context, id gidx.PrefixedID) (*generated.Status, error)
	FindStatusNamespaceByID(ctx context.Context, id gidx.PrefixedID) (*generated.StatusNamespace, error)
	FindStatusOwnerByID(ctx context.Context, id gidx.PrefixedID) (*StatusOwner, error)
}

type ErrInvalidField added in v0.0.2

type ErrInvalidField struct {
	// contains filtered or unexported fields
}

ErrInvalidField is returned when an invalid input is provided.

func NewInvalidFieldError added in v0.0.4

func NewInvalidFieldError(field string, err error) *ErrInvalidField

func (*ErrInvalidField) Error added in v0.0.2

func (e *ErrInvalidField) Error() string

Error implements the error interface.

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler is an http handler wrapping a Resolver

func (*Handler) Handler

func (h *Handler) Handler() http.HandlerFunc

Handler returns the http.HandlerFunc for the GraphAPI

func (*Handler) Routes

func (h *Handler) Routes(e *echo.Group)

Routes ...

type MetadataNode

type MetadataNode struct {
	ID gidx.PrefixedID `json:"id"`
	// Metadata about this node, including annotations and statuses.
	Metadata *generated.Metadata `json:"metadata,omitempty"`
}

MetadataNode provides an interface for any Node in the graph that can store metadata.

func (MetadataNode) IsEntity

func (MetadataNode) IsEntity()

type MetadataNodeResolver

type MetadataNodeResolver interface {
	Metadata(ctx context.Context, obj *MetadataNode) (*generated.Metadata, error)
}

type MetadataResolver

type MetadataResolver interface {
	Node(ctx context.Context, obj *generated.Metadata) (*MetadataNode, error)
}

type QueryResolver

type QueryResolver interface {
	AnnotationNamespace(ctx context.Context, id gidx.PrefixedID) (*generated.AnnotationNamespace, error)
}

type Resolver

type Resolver struct {
	// contains filtered or unexported fields
}

Resolver provides a graph response resolver

func NewResolver

func NewResolver(client *ent.Client, logger *zap.SugaredLogger) *Resolver

NewResolver returns a resolver configured with the given ent client

func (*Resolver) AnnotationNamespace

func (r *Resolver) AnnotationNamespace() AnnotationNamespaceResolver

AnnotationNamespace returns AnnotationNamespaceResolver implementation.

func (*Resolver) Entity

func (r *Resolver) Entity() EntityResolver

Entity returns EntityResolver implementation.

func (*Resolver) Handler

func (r *Resolver) Handler(withPlayground bool, middleware ...echo.MiddlewareFunc) *Handler

Handler returns an http handler for a graph resolver

func (*Resolver) Metadata

func (r *Resolver) Metadata() MetadataResolver

Metadata returns MetadataResolver implementation.

func (*Resolver) MetadataNode

func (r *Resolver) MetadataNode() MetadataNodeResolver

MetadataNode returns MetadataNodeResolver 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) ResourceOwner

func (r *Resolver) ResourceOwner() ResourceOwnerResolver

ResourceOwner returns ResourceOwnerResolver implementation.

func (*Resolver) StatusNamespace

func (r *Resolver) StatusNamespace() StatusNamespaceResolver

StatusNamespace returns StatusNamespaceResolver implementation.

func (*Resolver) StatusOwner

func (r *Resolver) StatusOwner() StatusOwnerResolver

StatusOwner returns StatusOwnerResolver implementation.

type ResolverRoot

type ResolverRoot interface {
	AnnotationNamespace() AnnotationNamespaceResolver
	Entity() EntityResolver
	Metadata() MetadataResolver
	MetadataNode() MetadataNodeResolver
	Mutation() MutationResolver
	Query() QueryResolver
	ResourceOwner() ResourceOwnerResolver
	StatusNamespace() StatusNamespaceResolver
	StatusOwner() StatusOwnerResolver
}

type ResourceOwner

type ResourceOwner struct {
	ID                   gidx.PrefixedID                          `json:"id"`
	AnnotationNamespaces *generated.AnnotationNamespaceConnection `json:"annotationNamespaces"`
	// Metadata about this node, including annotations and statuses.
	Metadata *generated.Metadata `json:"metadata,omitempty"`
}

func (ResourceOwner) IsEntity

func (ResourceOwner) IsEntity()

type ResourceOwnerResolver

type ResourceOwnerResolver interface {
	AnnotationNamespaces(ctx context.Context, obj *ResourceOwner, after *entgql.Cursor[gidx.PrefixedID], first *int, before *entgql.Cursor[gidx.PrefixedID], last *int, orderBy *generated.AnnotationNamespaceOrder, where *generated.AnnotationNamespaceWhereInput) (*generated.AnnotationNamespaceConnection, error)
	Metadata(ctx context.Context, obj *ResourceOwner) (*generated.Metadata, error)
}

type StatusDeleteInput

type StatusDeleteInput struct {
	// The node ID for this status.
	NodeID gidx.PrefixedID `json:"nodeID"`
	// The namespace ID for this status.
	NamespaceID gidx.PrefixedID `json:"namespaceID"`
	// The source for this status.
	Source string `json:"source"`
}

Input information to delete an status.

type StatusDeleteResponse

type StatusDeleteResponse struct {
	// The ID of the unset status.
	DeletedID gidx.PrefixedID `json:"deletedID"`
}

Return response from statusDelete

type StatusNamespaceCreatePayload

type StatusNamespaceCreatePayload struct {
	// The created status namespace.
	StatusNamespace *generated.StatusNamespace `json:"statusNamespace"`
}

Return response from statusNamespaceCreate

type StatusNamespaceDeletePayload

type StatusNamespaceDeletePayload struct {
	// The ID of the deleted status namespace.
	DeletedID gidx.PrefixedID `json:"deletedID"`
	// The count of statuss deleted
	StatusDeletedCount int `json:"statusDeletedCount"`
}

Return response from statusNamespaceDelete

type StatusNamespaceResolver

type StatusNamespaceResolver interface {
	Owner(ctx context.Context, obj *generated.StatusNamespace) (*StatusOwner, error)
}

type StatusNamespaceUpdatePayload

type StatusNamespaceUpdatePayload struct {
	// The updated status namespace.
	StatusNamespace *generated.StatusNamespace `json:"statusNamespace"`
}

Return response from statusNamespaceUpdate

type StatusOwner

type StatusOwner struct {
	ID               gidx.PrefixedID                      `json:"id"`
	StatusNamespaces *generated.StatusNamespaceConnection `json:"statusNamespaces"`
	// Metadata about this node, including annotations and statuses.
	Metadata *generated.Metadata `json:"metadata,omitempty"`
}

func (StatusOwner) IsEntity

func (StatusOwner) IsEntity()

type StatusOwnerResolver

type StatusOwnerResolver interface {
	StatusNamespaces(ctx context.Context, obj *StatusOwner, after *entgql.Cursor[gidx.PrefixedID], first *int, before *entgql.Cursor[gidx.PrefixedID], last *int, orderBy *generated.StatusNamespaceOrder, where *generated.StatusNamespaceWhereInput) (*generated.StatusNamespaceConnection, error)
	Metadata(ctx context.Context, obj *StatusOwner) (*generated.Metadata, error)
}

type StatusUpdateInput

type StatusUpdateInput struct {
	// The node ID for this status.
	NodeID gidx.PrefixedID `json:"nodeID"`
	// The namespace ID for this status.
	NamespaceID gidx.PrefixedID `json:"namespaceID"`
	// The source for this status.
	Source string `json:"source"`
	// The data to save in this status.
	Data json.RawMessage `json:"data"`
}

Input information to update an status.

type StatusUpdateResponse

type StatusUpdateResponse struct {
	// The set status.
	Status *generated.Status `json:"status"`
}

Return response from statusUpdate

Jump to

Keyboard shortcuts

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