graphql

package
v0.7.1 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2025 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DataLoaderMiddleware

func DataLoaderMiddleware(repo interfaces.Repository, slackClient interfaces.SlackClient) func(http.Handler) http.Handler

DataLoaderMiddleware injects data loaders into the context

func GetAlert

func GetAlert(ctx context.Context, alertID types.AlertID) (*alert.Alert, error)

GetAlert returns single alert by id efficiently

func GetTicket

func GetTicket(ctx context.Context, ticketID types.TicketID) (*ticket.Ticket, error)

GetTicket returns single ticket by id efficiently

func GetUser

func GetUser(ctx context.Context, userID string) (*graphql1.User, error)

GetUser returns single user by id efficiently

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

Types

type ActivityResolver

type ActivityResolver interface {
	User(ctx context.Context, obj *graphql1.Activity) (*graphql1.User, error)
	Alert(ctx context.Context, obj *graphql1.Activity) (*alert.Alert, error)
	Ticket(ctx context.Context, obj *graphql1.Activity) (*ticket.Ticket, error)
}

type AlertResolver

type AlertResolver interface {
	ID(ctx context.Context, obj *alert.Alert) (string, error)

	Schema(ctx context.Context, obj *alert.Alert) (string, error)
	Data(ctx context.Context, obj *alert.Alert) (string, error)
	Attributes(ctx context.Context, obj *alert.Alert) ([]*graphql1.AlertAttribute, error)
	CreatedAt(ctx context.Context, obj *alert.Alert) (string, error)
	Ticket(ctx context.Context, obj *alert.Alert) (*ticket.Ticket, error)

	TagObjects(ctx context.Context, obj *alert.Alert) ([]*graphql1.TagObject, error)
}

type CommentResolver

type CommentResolver interface {
	ID(ctx context.Context, obj *ticket.Comment) (string, error)
	Content(ctx context.Context, obj *ticket.Comment) (string, error)
	User(ctx context.Context, obj *ticket.Comment) (*graphql1.User, error)
	CreatedAt(ctx context.Context, obj *ticket.Comment) (string, error)
	UpdatedAt(ctx context.Context, obj *ticket.Comment) (string, error)
}

type ComplexityRoot

type ComplexityRoot struct {
	ActivitiesResponse struct {
		Activities func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	Activity struct {
		Alert     func(childComplexity int) int
		AlertID   func(childComplexity int) int
		CommentID func(childComplexity int) int
		CreatedAt func(childComplexity int) int
		ID        func(childComplexity int) int
		Metadata  func(childComplexity int) int
		Ticket    func(childComplexity int) int
		TicketID  func(childComplexity int) int
		Type      func(childComplexity int) int
		User      func(childComplexity int) int
		UserID    func(childComplexity int) int
	}

	Alert struct {
		Attributes  func(childComplexity int) int
		CreatedAt   func(childComplexity int) int
		Data        func(childComplexity int) int
		Description func(childComplexity int) int
		ID          func(childComplexity int) int
		Schema      func(childComplexity int) int
		TagObjects  func(childComplexity int) int
		Tags        func(childComplexity int) int
		Ticket      func(childComplexity int) int
		Title       func(childComplexity int) int
	}

	AlertAttribute struct {
		Auto  func(childComplexity int) int
		Key   func(childComplexity int) int
		Link  func(childComplexity int) int
		Value func(childComplexity int) int
	}

	AlertCluster struct {
		Alerts      func(childComplexity int) int
		CenterAlert func(childComplexity int) int
		CreatedAt   func(childComplexity int) int
		ID          func(childComplexity int) int
		Keywords    func(childComplexity int) int
		Size        func(childComplexity int) int
	}

	AlertsConnection struct {
		Alerts     func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	AlertsResponse struct {
		Alerts     func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	ClusteringSummary struct {
		Clusters    func(childComplexity int) int
		ComputedAt  func(childComplexity int) int
		NoiseAlerts func(childComplexity int) int
		Parameters  func(childComplexity int) int
		TotalCount  func(childComplexity int) int
	}

	Comment struct {
		Content   func(childComplexity int) int
		CreatedAt func(childComplexity int) int
		ID        func(childComplexity int) int
		UpdatedAt func(childComplexity int) int
		User      func(childComplexity int) int
	}

	CommentsResponse struct {
		Comments   func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	DBSCANParameters struct {
		Eps        func(childComplexity int) int
		MinSamples func(childComplexity int) int
	}

	DashboardStats struct {
		OpenTickets        func(childComplexity int) int
		OpenTicketsCount   func(childComplexity int) int
		UnboundAlerts      func(childComplexity int) int
		UnboundAlertsCount func(childComplexity int) int
	}

	Finding struct {
		Reason         func(childComplexity int) int
		Recommendation func(childComplexity int) int
		Severity       func(childComplexity int) int
		Summary        func(childComplexity int) int
	}

	Mutation struct {
		BindAlertsToTicket          func(childComplexity int, ticketID string, alertIds []string) int
		CreateTag                   func(childComplexity int, name string) int
		CreateTicket                func(childComplexity int, title string, description string, isTest *bool) int
		CreateTicketFromAlerts      func(childComplexity int, alertIds []string, title *string, description *string) int
		DeleteTag                   func(childComplexity int, id string) int
		UpdateAlertTags             func(childComplexity int, alertID string, tagIds []string) int
		UpdateMultipleTicketsStatus func(childComplexity int, ids []string, status string) int
		UpdateTag                   func(childComplexity int, input graphql1.UpdateTagInput) int
		UpdateTicket                func(childComplexity int, id string, title string, description *string) int
		UpdateTicketConclusion      func(childComplexity int, id string, conclusion string, reason string) int
		UpdateTicketStatus          func(childComplexity int, id string, status string) int
		UpdateTicketTags            func(childComplexity int, ticketID string, tagIds []string) int
	}

	Query struct {
		Activities             func(childComplexity int, offset *int, limit *int) int
		Alert                  func(childComplexity int, id string) int
		AlertClusters          func(childComplexity int, limit *int, offset *int, minClusterSize *int, eps *float64, minSamples *int, keyword *string) int
		Alerts                 func(childComplexity int, offset *int, limit *int) int
		AvailableTagColorNames func(childComplexity int) int
		AvailableTagColors     func(childComplexity int) int
		ClusterAlerts          func(childComplexity int, clusterID string, keyword *string, limit *int, offset *int) int
		Dashboard              func(childComplexity int) int
		SimilarTickets         func(childComplexity int, ticketID string, threshold float64, offset *int, limit *int) int
		SimilarTicketsForAlert func(childComplexity int, alertID string, threshold float64, offset *int, limit *int) int
		Tags                   func(childComplexity int) int
		Ticket                 func(childComplexity int, id string) int
		TicketComments         func(childComplexity int, ticketID string, offset *int, limit *int) int
		Tickets                func(childComplexity int, statuses []string, offset *int, limit *int) int
		UnboundAlerts          func(childComplexity int, threshold *float64, keyword *string, ticketID *string, offset *int, limit *int) int
	}

	TagMetadata struct {
		Color       func(childComplexity int) int
		CreatedAt   func(childComplexity int) int
		Description func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
		UpdatedAt   func(childComplexity int) int
	}

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

	Ticket struct {
		Alerts          func(childComplexity int) int
		AlertsCount     func(childComplexity int) int
		AlertsPaginated func(childComplexity int, offset *int, limit *int) int
		Assignee        func(childComplexity int) int
		Comments        func(childComplexity int) int
		CommentsCount   func(childComplexity int) int
		Conclusion      func(childComplexity int) int
		CreatedAt       func(childComplexity int) int
		Description     func(childComplexity int) int
		Finding         func(childComplexity int) int
		ID              func(childComplexity int) int
		IsTest          func(childComplexity int) int
		Reason          func(childComplexity int) int
		SlackLink       func(childComplexity int) int
		Status          func(childComplexity int) int
		Summary         func(childComplexity int) int
		TagObjects      func(childComplexity int) int
		Tags            func(childComplexity int) int
		Title           func(childComplexity int) int
		UpdatedAt       func(childComplexity int) int
	}

	TicketsResponse struct {
		Tickets    func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

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

type Config

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

type DirectiveRoot

type DirectiveRoot struct {
}

type FindingResolver

type FindingResolver interface {
	Severity(ctx context.Context, obj *ticket.Finding) (string, error)
}

type MutationResolver

type MutationResolver interface {
	UpdateTicketStatus(ctx context.Context, id string, status string) (*ticket.Ticket, error)
	UpdateMultipleTicketsStatus(ctx context.Context, ids []string, status string) ([]*ticket.Ticket, error)
	UpdateTicketConclusion(ctx context.Context, id string, conclusion string, reason string) (*ticket.Ticket, error)
	UpdateTicket(ctx context.Context, id string, title string, description *string) (*ticket.Ticket, error)
	CreateTicket(ctx context.Context, title string, description string, isTest *bool) (*ticket.Ticket, error)
	CreateTicketFromAlerts(ctx context.Context, alertIds []string, title *string, description *string) (*ticket.Ticket, error)
	BindAlertsToTicket(ctx context.Context, ticketID string, alertIds []string) (*ticket.Ticket, error)
	UpdateAlertTags(ctx context.Context, alertID string, tagIds []string) (*alert.Alert, error)
	UpdateTicketTags(ctx context.Context, ticketID string, tagIds []string) (*ticket.Ticket, error)
	CreateTag(ctx context.Context, name string) (*graphql1.TagMetadata, error)
	DeleteTag(ctx context.Context, id string) (bool, error)
	UpdateTag(ctx context.Context, input graphql1.UpdateTagInput) (*graphql1.TagMetadata, error)
}

type QueryResolver

type QueryResolver interface {
	Ticket(ctx context.Context, id string) (*ticket.Ticket, error)
	Tickets(ctx context.Context, statuses []string, offset *int, limit *int) (*graphql1.TicketsResponse, error)
	SimilarTickets(ctx context.Context, ticketID string, threshold float64, offset *int, limit *int) (*graphql1.TicketsResponse, error)
	SimilarTicketsForAlert(ctx context.Context, alertID string, threshold float64, offset *int, limit *int) (*graphql1.TicketsResponse, error)
	TicketComments(ctx context.Context, ticketID string, offset *int, limit *int) (*graphql1.CommentsResponse, error)
	Alert(ctx context.Context, id string) (*alert.Alert, error)
	Alerts(ctx context.Context, offset *int, limit *int) (*graphql1.AlertsResponse, error)
	UnboundAlerts(ctx context.Context, threshold *float64, keyword *string, ticketID *string, offset *int, limit *int) (*graphql1.AlertsResponse, error)
	Dashboard(ctx context.Context) (*graphql1.DashboardStats, error)
	Activities(ctx context.Context, offset *int, limit *int) (*graphql1.ActivitiesResponse, error)
	AlertClusters(ctx context.Context, limit *int, offset *int, minClusterSize *int, eps *float64, minSamples *int, keyword *string) (*graphql1.ClusteringSummary, error)
	ClusterAlerts(ctx context.Context, clusterID string, keyword *string, limit *int, offset *int) (*graphql1.AlertsConnection, error)
	Tags(ctx context.Context) ([]*graphql1.TagMetadata, error)
	AvailableTagColors(ctx context.Context) ([]string, error)
	AvailableTagColorNames(ctx context.Context) ([]string, error)
}

type Resolver

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

Resolver serves as dependency injection point for the application.

func NewResolver

func NewResolver(repo interfaces.Repository, slackService *slack.Service, uc *usecase.UseCases) *Resolver

NewResolver creates a new resolver instance.

func (*Resolver) Activity

func (r *Resolver) Activity() ActivityResolver

Activity returns ActivityResolver implementation.

func (*Resolver) Alert

func (r *Resolver) Alert() AlertResolver

Alert returns AlertResolver implementation.

func (*Resolver) Comment

func (r *Resolver) Comment() CommentResolver

Comment returns CommentResolver implementation.

func (*Resolver) Finding

func (r *Resolver) Finding() FindingResolver

Finding returns FindingResolver 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) Ticket

func (r *Resolver) Ticket() TicketResolver

Ticket returns TicketResolver implementation.

type ResolverRoot

type ResolverRoot interface {
	Activity() ActivityResolver
	Alert() AlertResolver
	Comment() CommentResolver
	Finding() FindingResolver
	Mutation() MutationResolver
	Query() QueryResolver
	Ticket() TicketResolver
}

type TicketResolver

type TicketResolver interface {
	ID(ctx context.Context, obj *ticket.Ticket) (string, error)
	Status(ctx context.Context, obj *ticket.Ticket) (string, error)

	Assignee(ctx context.Context, obj *ticket.Ticket) (*graphql1.User, error)
	Alerts(ctx context.Context, obj *ticket.Ticket) ([]*alert.Alert, error)
	AlertsPaginated(ctx context.Context, obj *ticket.Ticket, offset *int, limit *int) (*graphql1.AlertsResponse, error)
	Comments(ctx context.Context, obj *ticket.Ticket) ([]*ticket.Comment, error)
	AlertsCount(ctx context.Context, obj *ticket.Ticket) (int, error)
	CommentsCount(ctx context.Context, obj *ticket.Ticket) (int, error)
	Conclusion(ctx context.Context, obj *ticket.Ticket) (*string, error)

	SlackLink(ctx context.Context, obj *ticket.Ticket) (*string, error)
	CreatedAt(ctx context.Context, obj *ticket.Ticket) (string, error)
	UpdatedAt(ctx context.Context, obj *ticket.Ticket) (string, error)

	Tags(ctx context.Context, obj *ticket.Ticket) ([]string, error)
	TagObjects(ctx context.Context, obj *ticket.Ticket) ([]*graphql1.TagObject, error)
}

Jump to

Keyboard shortcuts

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