graphql

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2026 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ErrCodeBadUserInput            = "BAD_USER_INPUT"
	ErrCodeNotFound                = "NOT_FOUND"
	ErrCodeForbidden               = "FORBIDDEN"
	ErrCodeConflict                = "CONFLICT"
	ErrCodeUnauthenticated         = "UNAUTHENTICATED"
	ErrCodeMissingRequiredFields   = "MISSING_REQUIRED_FIELDS"
	ErrCodeTitleRequired           = "TITLE_REQUIRED"
	ErrCodeInvalidStatusTransition = "INVALID_STATUS_TRANSITION"
	ErrCodeFieldValidationFailed   = "FIELD_VALIDATION_FAILED"
	ErrCodeActivationFailed        = "ACTIVATION_FAILED"
)

GraphQL extensions code values. The frontend matches on these literals to render error-specific UI (e.g. "you need to fill these required fields" vs. "the draft has already been opened"). Add new entries here — do not embed code literals at call sites.

View Source
const (
	ExtKeyCode              = "code"
	ExtKeyMissingFieldNames = "missingFieldNames"
	ExtKeyCurrentStatus     = "currentStatus"
)

GraphQL extensions field names. Each granular code is allowed to add code-specific keys in addition to "code"; the frontend reads them by name off `error.extensions`.

Variables

View Source
var ErrSlackUserNotInRepo = goerr.New("slack user not found in repository")

ErrSlackUserNotInRepo is reported when the SlackUser loader is asked to resolve a user ID that the SlackUser repository has no record of. Surfacing it (instead of silently dropping the ID) makes "the Reporter column is suddenly empty" investigations 5 minutes instead of 5 hours - the empty cell now has a paired Sentry event / log line naming the missing ID, and the field-level GraphQL error tells the client that the resolver actually failed, not that the data is genuinely absent.

Functions

func ErrorCode

func ErrorCode(err error) string

ErrorCode returns the granular GraphQL code for err, or "" when the error is unclassified (which the HTTP layer treats as a server fault → 500).

The ordering matters when an error chain matches multiple sentinels — the more specific code wins (e.g. ErrMissingRequiredOnSubmit before any generic CONFLICT classification).

func ErrorExtensions

func ErrorExtensions(err error) map[string]any

ErrorExtensions builds the GraphQL `extensions` map for err, including the code (when classifiable) and any code-specific detail fields the frontend needs to render a useful message. The caller (typically the gqlgen ErrorPresenter) merges the returned map into gqlerror.Extensions.

Returns an empty (non-nil) map for unclassified errors so the caller can always merge unconditionally.

func IsClientError

func IsClientError(err error) bool

IsClientError reports whether err is a user-fault classification (4xx). Server-fault classifications (ACTIVATION_FAILED, unclassified) return false so the ErrorPresenter logs them at full severity.

func MakeActionKey

func MakeActionKey(workspaceID string, id int64) actionKey

MakeActionKey constructs an action loader key.

func MakeActionsByCaseKey

func MakeActionsByCaseKey(workspaceID string, caseID int64) actionsByCaseKey

MakeActionsByCaseKey constructs an actions-by-case loader key.

func MakeCaseKey

func MakeCaseKey(workspaceID string, id int64) caseKey

MakeCaseKey constructs a case loader key.

func MarshalAny

func MarshalAny(v any) graphql.Marshaler

MarshalAny serializes any value to JSON

func MarshalJSON

func MarshalJSON(v map[string]any) graphql.Marshaler

MarshalJSON serializes map[string]any to JSON

func MarshalTime

func MarshalTime(t time.Time) graphql.Marshaler

MarshalTime serializes time.Time to RFC3339 string

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

func UnmarshalAny

func UnmarshalAny(v interface{}) (any, error)

UnmarshalAny deserializes any JSON value. gqlgen feeds numeric inputs as json.Number; downstream validators expect concrete numeric types, so we promote json.Number to float64 (or int64 when integral) here. Recursive for nested arrays/objects.

func UnmarshalJSON

func UnmarshalJSON(v interface{}) (map[string]any, error)

UnmarshalJSON deserializes JSON to map[string]any

func UnmarshalTime

func UnmarshalTime(v interface{}) (time.Time, error)

UnmarshalTime deserializes RFC3339 string to time.Time

func WithDataLoaders

func WithDataLoaders(ctx context.Context, loaders *DataLoaders) context.Context

WithDataLoaders adds DataLoaders to context.

Types

type ActionEventResolver

type ActionEventResolver interface {
	Actor(ctx context.Context, obj *graphql1.ActionEvent) (*graphql1.SlackUser, error)
}

type ActionResolver

type ActionResolver interface {
	Case(ctx context.Context, obj *graphql1.Action) (*graphql1.Case, error)

	Assignee(ctx context.Context, obj *graphql1.Action) (*graphql1.SlackUser, error)

	Messages(ctx context.Context, obj *graphql1.Action, limit *int, cursor *string) (*graphql1.SlackMessageConnection, error)
	Events(ctx context.Context, obj *graphql1.Action, limit *int, cursor *string) (*graphql1.ActionEventConnection, error)
	Steps(ctx context.Context, obj *graphql1.Action) ([]*graphql1.ActionStep, error)
	StepProgress(ctx context.Context, obj *graphql1.Action) (*graphql1.ActionStepProgress, error)
}

type CaseResolver

type CaseResolver interface {
	ChannelUserCount(ctx context.Context, obj *graphql1.Case) (int, error)
	ChannelUsers(ctx context.Context, obj *graphql1.Case, limit *int, offset *int, filter *string) (*graphql1.ChannelUserConnection, error)

	Reporter(ctx context.Context, obj *graphql1.Case) (*graphql1.SlackUser, error)

	Assignees(ctx context.Context, obj *graphql1.Case) ([]*graphql1.SlackUser, error)

	SlackChannelName(ctx context.Context, obj *graphql1.Case) (*string, error)
	SlackChannelURL(ctx context.Context, obj *graphql1.Case) (*string, error)

	Fields(ctx context.Context, obj *graphql1.Case) ([]*graphql1.FieldValue, error)
	Actions(ctx context.Context, obj *graphql1.Case, filter *graphql1.ActionArchiveFilter) ([]*graphql1.Action, error)
	SlackMessages(ctx context.Context, obj *graphql1.Case, limit *int, cursor *string) (*graphql1.SlackMessageConnection, error)

	AgentSources(ctx context.Context, obj *graphql1.Case) ([]*graphql1.Source, error)
}

type ComplexityRoot

type ComplexityRoot struct {
	Action struct {
		Archived       func(childComplexity int) int
		ArchivedAt     func(childComplexity int) int
		Assignee       func(childComplexity int) int
		AssigneeID     func(childComplexity int) int
		Case           func(childComplexity int) int
		CaseID         func(childComplexity int) int
		CreatedAt      func(childComplexity int) int
		Description    func(childComplexity int) int
		DueDate        func(childComplexity int) int
		Events         func(childComplexity int, limit *int, cursor *string) int
		ID             func(childComplexity int) int
		Messages       func(childComplexity int, limit *int, cursor *string) int
		SlackMessageTs func(childComplexity int) int
		Status         func(childComplexity int) int
		StepProgress   func(childComplexity int) int
		Steps          func(childComplexity int) int
		Title          func(childComplexity int) int
		UpdatedAt      func(childComplexity int) int
	}

	ActionConfig struct {
		Closed   func(childComplexity int) int
		Initial  func(childComplexity int) int
		Statuses func(childComplexity int) int
	}

	ActionEvent struct {
		ActionID  func(childComplexity int) int
		Actor     func(childComplexity int) int
		ActorID   func(childComplexity int) int
		CreatedAt func(childComplexity int) int
		ID        func(childComplexity int) int
		Kind      func(childComplexity int) int
		NewValue  func(childComplexity int) int
		OldValue  func(childComplexity int) int
	}

	ActionEventConnection struct {
		Items      func(childComplexity int) int
		NextCursor func(childComplexity int) int
	}

	ActionStatusDefinition struct {
		Color       func(childComplexity int) int
		Description func(childComplexity int) int
		Emoji       func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
	}

	ActionStep struct {
		ActionID      func(childComplexity int) int
		CreatedAt     func(childComplexity int) int
		CreatedBy     func(childComplexity int) int
		CreatedByUser func(childComplexity int) int
		Done          func(childComplexity int) int
		DoneAt        func(childComplexity int) int
		DoneBy        func(childComplexity int) int
		DoneByUser    func(childComplexity int) int
		ID            func(childComplexity int) int
		Title         func(childComplexity int) int
		UpdatedAt     func(childComplexity int) int
	}

	ActionStepProgress struct {
		Done  func(childComplexity int) int
		Total func(childComplexity int) int
	}

	AssistLog struct {
		Actions   func(childComplexity int) int
		CaseID    func(childComplexity int) int
		CreatedAt func(childComplexity int) int
		ID        func(childComplexity int) int
		NextSteps func(childComplexity int) int
		Reasoning func(childComplexity int) int
		Summary   func(childComplexity int) int
	}

	AssistLogConnection struct {
		HasMore    func(childComplexity int) int
		Items      func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	Case struct {
		AccessDenied          func(childComplexity int) int
		Actions               func(childComplexity int, filter *graphql1.ActionArchiveFilter) int
		AgentAdditionalPrompt func(childComplexity int) int
		AgentSources          func(childComplexity int) int
		AssigneeIDs           func(childComplexity int) int
		Assignees             func(childComplexity int) int
		BoardStatus           func(childComplexity int) int
		ChannelUserCount      func(childComplexity int) int
		ChannelUsers          func(childComplexity int, limit *int, offset *int, filter *string) int
		CreatedAt             func(childComplexity int) int
		Description           func(childComplexity int) int
		Fields                func(childComplexity int) int
		ID                    func(childComplexity int) int
		IsPrivate             func(childComplexity int) int
		IsTest                func(childComplexity int) int
		IsThreadBound         func(childComplexity int) int
		Reporter              func(childComplexity int) int
		ReporterID            func(childComplexity int) int
		SlackChannelID        func(childComplexity int) int
		SlackChannelName      func(childComplexity int) int
		SlackChannelURL       func(childComplexity int) int
		SlackMessages         func(childComplexity int, limit *int, cursor *string) int
		SlackThreadTS         func(childComplexity int) int
		Status                func(childComplexity int) int
		Title                 func(childComplexity int) int
		UpdatedAt             func(childComplexity int) int
	}

	CaseJob struct {
		Description func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
		Prompt      func(childComplexity int) int
		Quiet       func(childComplexity int) int
		Strategy    func(childComplexity int) int
		Trigger     func(childComplexity int) int
	}

	CaseRef struct {
		ID          func(childComplexity int) int
		Status      func(childComplexity int) int
		Title       func(childComplexity int) int
		WorkspaceID func(childComplexity int) int
	}

	ChannelUserConnection struct {
		HasMore    func(childComplexity int) int
		Items      func(childComplexity int) int
		TotalCount func(childComplexity int) int
	}

	EntityLabels struct {
		Case func(childComplexity int) int
	}

	FieldConfiguration struct {
		ActionConfig func(childComplexity int) int
		Fields       func(childComplexity int) int
		Labels       func(childComplexity int) int
	}

	FieldDefinition struct {
		Description          func(childComplexity int) int
		ID                   func(childComplexity int) int
		Name                 func(childComplexity int) int
		Options              func(childComplexity int) int
		ReferenceWorkspaceID func(childComplexity int) int
		Required             func(childComplexity int) int
		Type                 func(childComplexity int) int
	}

	FieldOption struct {
		Description func(childComplexity int) int
		ID          func(childComplexity int) int
		Metadata    func(childComplexity int) int
		Name        func(childComplexity int) int
	}

	FieldValue struct {
		FieldID func(childComplexity int) int
		Value   func(childComplexity int) int
	}

	GitHubConfig struct {
		Repositories func(childComplexity int) int
	}

	GitHubRepoValidationResult struct {
		CanFetchIssues       func(childComplexity int) int
		CanFetchPullRequests func(childComplexity int) int
		Description          func(childComplexity int) int
		ErrorMessage         func(childComplexity int) int
		FullName             func(childComplexity int) int
		IsPrivate            func(childComplexity int) int
		IssueCount           func(childComplexity int) int
		Owner                func(childComplexity int) int
		PullRequestCount     func(childComplexity int) int
		Repo                 func(childComplexity int) int
		Valid                func(childComplexity int) int
	}

	GitHubRepository struct {
		Owner func(childComplexity int) int
		Repo  func(childComplexity int) int
	}

	HomeMessage struct {
		Message func(childComplexity int) int
	}

	ImportActionResult struct {
		CreatedAction   func(childComplexity int) int
		CreatedActionID func(childComplexity int) int
		Error           func(childComplexity int) int
		Status          func(childComplexity int) int
	}

	ImportCaseResult struct {
		CreatedCase   func(childComplexity int) int
		CreatedCaseID func(childComplexity int) int
		Error         func(childComplexity int) int
		Status        func(childComplexity int) int
	}

	ImportIssue struct {
		Message  func(childComplexity int) int
		Path     func(childComplexity int) int
		Severity func(childComplexity int) int
	}

	ImportSession struct {
		CreatedAt       func(childComplexity int) int
		CreatedCount    func(childComplexity int) int
		CreatorUserID   func(childComplexity int) int
		ExecutedAt      func(childComplexity int) int
		FailedCount     func(childComplexity int) int
		FieldSchemaHash func(childComplexity int) int
		ID              func(childComplexity int) int
		Issues          func(childComplexity int) int
		SkippedCount    func(childComplexity int) int
		Snapshot        func(childComplexity int) int
		Source          func(childComplexity int) int
		Status          func(childComplexity int) int
		UpdatedAt       func(childComplexity int) int
		Valid           func(childComplexity int) int
		WorkspaceID     func(childComplexity int) int
	}

	ImportSnapshot struct {
		Cases   func(childComplexity int) int
		Version func(childComplexity int) int
	}

	ImportSnapshotAction struct {
		AssigneeID  func(childComplexity int) int
		Description func(childComplexity int) int
		DueDate     func(childComplexity int) int
		Index       func(childComplexity int) int
		Issues      func(childComplexity int) int
		Result      func(childComplexity int) int
		Title       func(childComplexity int) int
	}

	ImportSnapshotCase struct {
		Actions     func(childComplexity int) int
		AssigneeIDs func(childComplexity int) int
		Assignees   func(childComplexity int) int
		Description func(childComplexity int) int
		Fields      func(childComplexity int) int
		Index       func(childComplexity int) int
		IsPrivate   func(childComplexity int) int
		Issues      func(childComplexity int) int
		Result      func(childComplexity int) int
		Title       func(childComplexity int) int
	}

	ImportSnapshotField struct {
		Display func(childComplexity int) int
		Key     func(childComplexity int) int
	}

	ImportSource struct {
		OriginalFileName func(childComplexity int) int
		SizeBytes        func(childComplexity int) int
	}

	JobRunEvent struct {
		AgentLabel     func(childComplexity int) int
		EventID        func(childComplexity int) int
		Kind           func(childComplexity int) int
		OccurredAt     func(childComplexity int) int
		ParentSequence func(childComplexity int) int
		Payload        func(childComplexity int) int
		Phase          func(childComplexity int) int
		RunID          func(childComplexity int) int
		Sequence       func(childComplexity int) int
	}

	JobRunLog struct {
		CaseID         func(childComplexity int) int
		DurationMs     func(childComplexity int) int
		EndedAt        func(childComplexity int) int
		ErrorMessage   func(childComplexity int) int
		EventTriggerAt func(childComplexity int) int
		EventType      func(childComplexity int) int
		JobID          func(childComplexity int) int
		JobName        func(childComplexity int) int
		RunID          func(childComplexity int) int
		Stage          func(childComplexity int) int
		StartedAt      func(childComplexity int) int
		Strategy       func(childComplexity int) int
		SystemPrompt   func(childComplexity int) int
		TraceID        func(childComplexity int) int
		WorkspaceID    func(childComplexity int) int
	}

	JobRunLogConnection struct {
		Items      func(childComplexity int) int
		NextCursor func(childComplexity int) int
	}

	JobSchedule struct {
		Cron         func(childComplexity int) int
		EverySeconds func(childComplexity int) int
	}

	JobTrigger struct {
		CaseEvents func(childComplexity int) int
		Schedule   func(childComplexity int) int
	}

	Knowledge struct {
		Claim     func(childComplexity int) int
		CreatedAt func(childComplexity int) int
		ID        func(childComplexity int) int
		Tags      func(childComplexity int) int
		Title     func(childComplexity int) int
		UpdatedAt func(childComplexity int) int
	}

	Memo struct {
		ArchivedAt func(childComplexity int) int
		Case       func(childComplexity int) int
		CaseID     func(childComplexity int) int
		CreatedAt  func(childComplexity int) int
		Fields     func(childComplexity int) int
		ID         func(childComplexity int) int
		Title      func(childComplexity int) int
		UpdatedAt  func(childComplexity int) int
	}

	MemoConfiguration struct {
		Description func(childComplexity int) int
		Fields      func(childComplexity int) int
	}

	Mutation struct {
		AddActionStep           func(childComplexity int, workspaceID string, input graphql1.AddActionStepInput) int
		ArchiveAction           func(childComplexity int, workspaceID string, id int) int
		ArchiveMemo             func(childComplexity int, workspaceID string, caseID int, id string) int
		AssignCase              func(childComplexity int, workspaceID string, id int, userIDs []string) int
		BulkArchiveActions      func(childComplexity int, workspaceID string, ids []int) int
		CloseCase               func(childComplexity int, workspaceID string, id int) int
		CreateAction            func(childComplexity int, workspaceID string, input graphql1.CreateActionInput) int
		CreateCase              func(childComplexity int, workspaceID string, input graphql1.CreateCaseInput) int
		CreateCaseImport        func(childComplexity int, workspaceID string, input graphql1.CreateCaseImportInput) int
		CreateDraft             func(childComplexity int, workspaceID string, input graphql1.CreateDraftInput) int
		CreateGitHubSource      func(childComplexity int, workspaceID string, input graphql1.CreateGitHubSourceInput) int
		CreateKnowledge         func(childComplexity int, workspaceID string, input graphql1.CreateKnowledgeInput) int
		CreateMemo              func(childComplexity int, workspaceID string, input graphql1.CreateMemoInput) int
		CreateNotionDBSource    func(childComplexity int, workspaceID string, input graphql1.CreateNotionDBSourceInput) int
		CreateNotionPageSource  func(childComplexity int, workspaceID string, input graphql1.CreateNotionPageSourceInput) int
		CreateSlackSource       func(childComplexity int, workspaceID string, input graphql1.CreateSlackSourceInput) int
		CreateTag               func(childComplexity int, workspaceID string, name *string) int
		DeleteActionStep        func(childComplexity int, workspaceID string, input graphql1.DeleteActionStepInput) int
		DeleteCase              func(childComplexity int, workspaceID string, id int) int
		DeleteKnowledge         func(childComplexity int, workspaceID string, id string) int
		DeleteSource            func(childComplexity int, workspaceID string, id string) int
		DeleteTag               func(childComplexity int, workspaceID string, id string) int
		DiscardDraft            func(childComplexity int, workspaceID string, id int) int
		ExecuteCaseImport       func(childComplexity int, workspaceID string, id string) int
		Noop                    func(childComplexity int) int
		PostActionSlackMessage  func(childComplexity int, workspaceID string, id int) int
		RenameActionStep        func(childComplexity int, workspaceID string, input graphql1.RenameActionStepInput) int
		ReopenCase              func(childComplexity int, workspaceID string, id int) int
		SetActionStepDone       func(childComplexity int, workspaceID string, input graphql1.SetActionStepDoneInput) int
		SetFavoriteWorkspaces   func(childComplexity int, workspaceIds []string) int
		SubmitDraft             func(childComplexity int, workspaceID string, id int, input *graphql1.SubmitDraftInput) int
		SyncCaseChannelUsers    func(childComplexity int, workspaceID string, id int) int
		UnarchiveAction         func(childComplexity int, workspaceID string, id int) int
		UnarchiveMemo           func(childComplexity int, workspaceID string, caseID int, id string) int
		UnassignCase            func(childComplexity int, workspaceID string, id int, userIDs []string) int
		UpdateAction            func(childComplexity int, workspaceID string, input graphql1.UpdateActionInput) int
		UpdateCase              func(childComplexity int, workspaceID string, input graphql1.UpdateCaseInput) int
		UpdateCaseAgentSettings func(childComplexity int, workspaceID string, input graphql1.UpdateCaseAgentSettingsInput) int
		UpdateCaseStatus        func(childComplexity int, workspaceID string, input graphql1.UpdateCaseStatusInput) int
		UpdateGitHubSource      func(childComplexity int, workspaceID string, input graphql1.UpdateGitHubSourceInput) int
		UpdateKnowledge         func(childComplexity int, workspaceID string, input graphql1.UpdateKnowledgeInput) int
		UpdateMemo              func(childComplexity int, workspaceID string, input graphql1.UpdateMemoInput) int
		UpdateNotionDBSource    func(childComplexity int, workspaceID string, input graphql1.UpdateNotionDBSourceInput) int
		UpdateNotionPageSource  func(childComplexity int, workspaceID string, input graphql1.UpdateNotionPageSourceInput) int
		UpdateSlackSource       func(childComplexity int, workspaceID string, input graphql1.UpdateSlackSourceInput) int
		UpdateSource            func(childComplexity int, workspaceID string, input graphql1.UpdateSourceInput) int
		UpdateTag               func(childComplexity int, workspaceID string, id string, name *string) int
		ValidateNotionDb        func(childComplexity int, workspaceID string, databaseID string) int
		ValidateNotionPage      func(childComplexity int, workspaceID string, pageID string) int
	}

	MyDueAction struct {
		Action        func(childComplexity int) int
		CaseID        func(childComplexity int) int
		CaseTitle     func(childComplexity int) int
		WorkspaceID   func(childComplexity int) int
		WorkspaceName func(childComplexity int) int
	}

	MyOpenCase struct {
		Case          func(childComplexity int) int
		Stalled       func(childComplexity int) int
		WorkspaceID   func(childComplexity int) int
		WorkspaceName func(childComplexity int) int
	}

	NotionDBConfig struct {
		DatabaseID    func(childComplexity int) int
		DatabaseTitle func(childComplexity int) int
		DatabaseURL   func(childComplexity int) int
	}

	NotionDBValidationResult struct {
		DatabaseTitle func(childComplexity int) int
		DatabaseURL   func(childComplexity int) int
		ErrorMessage  func(childComplexity int) int
		Valid         func(childComplexity int) int
	}

	NotionPageConfig struct {
		MaxDepth  func(childComplexity int) int
		PageID    func(childComplexity int) int
		PageTitle func(childComplexity int) int
		PageURL   func(childComplexity int) int
		Recursive func(childComplexity int) int
	}

	NotionPageValidationResult struct {
		ErrorMessage func(childComplexity int) int
		PageTitle    func(childComplexity int) int
		PageURL      func(childComplexity int) int
		Valid        func(childComplexity int) int
	}

	Query struct {
		Action               func(childComplexity int, workspaceID string, id int) int
		Actions              func(childComplexity int, workspaceID string, filter *graphql1.ActionArchiveFilter) int
		ActionsByCase        func(childComplexity int, workspaceID string, caseID int, filter *graphql1.ActionArchiveFilter) int
		AssistLogs           func(childComplexity int, workspaceID string, caseID int, limit *int, offset *int) int
		Case                 func(childComplexity int, workspaceID string, id int) int
		CaseImport           func(childComplexity int, workspaceID string, id string) int
		CaseJobRunLogs       func(childComplexity int, workspaceID string, caseID int, first *int, after *string) int
		CaseJobs             func(childComplexity int, workspaceID string, caseID int) int
		CaseRefsByIds        func(childComplexity int, workspaceID string, ids []int) int
		CaseStatusConfig     func(childComplexity int, workspaceID string) int
		Cases                func(childComplexity int, workspaceID string, status *types.CaseStatus) int
		Drafts               func(childComplexity int, workspaceID string) int
		FavoriteWorkspaceIds func(childComplexity int) int
		FieldConfiguration   func(childComplexity int, workspaceID string) int
		Health               func(childComplexity int) int
		HomeMessage          func(childComplexity int, clientTime time.Time, lang string) int
		JobRunEvents         func(childComplexity int, workspaceID string, caseID int, runID string) int
		JobRunLog            func(childComplexity int, workspaceID string, caseID int, runID string) int
		Knowledge            func(childComplexity int, workspaceID string, id string) int
		Knowledges           func(childComplexity int, workspaceID string, tagIds []string) int
		Memo                 func(childComplexity int, workspaceID string, caseID int, id string) int
		MemoConfiguration    func(childComplexity int, workspaceID string) int
		MemosByCase          func(childComplexity int, workspaceID string, caseID int, filter *graphql1.MemoArchiveFilter) int
		MyDueActions         func(childComplexity int) int
		MyOpenCases          func(childComplexity int) int
		OpenCaseActions      func(childComplexity int, workspaceID string) int
		ReferenceableCases   func(childComplexity int, workspaceID string, query *string, limit *int) int
		SearchKnowledge      func(childComplexity int, workspaceID string, query string, tagIds []string, limit *int) int
		SlackJoinedChannels  func(childComplexity int) int
		SlackUsers           func(childComplexity int) int
		Source               func(childComplexity int, workspaceID string, id string) int
		Sources              func(childComplexity int, workspaceID string) int
		Tag                  func(childComplexity int, workspaceID string, id string) int
		Tags                 func(childComplexity int, workspaceID string) int
		ValidateGitHubRepo   func(childComplexity int, workspaceID string, repository string) int
		Workspace            func(childComplexity int, workspaceID string) int
		WorkspaceGroups      func(childComplexity int) int
		Workspaces           func(childComplexity int) int
	}

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

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

	SlackConfig struct {
		Channels func(childComplexity int) int
	}

	SlackFile struct {
		Filetype   func(childComplexity int) int
		ID         func(childComplexity int) int
		Mimetype   func(childComplexity int) int
		Name       func(childComplexity int) int
		Permalink  func(childComplexity int) int
		Size       func(childComplexity int) int
		ThumbURL   func(childComplexity int) int
		URLPrivate func(childComplexity int) int
	}

	SlackMessage struct {
		ChannelID func(childComplexity int) int
		CreatedAt func(childComplexity int) int
		Files     func(childComplexity int) int
		ID        func(childComplexity int) int
		TeamID    func(childComplexity int) int
		Text      func(childComplexity int) int
		ThreadTs  func(childComplexity int) int
		UserID    func(childComplexity int) int
		UserName  func(childComplexity int) int
	}

	SlackMessageConnection struct {
		Items      func(childComplexity int) int
		NextCursor func(childComplexity int) int
	}

	SlackUser struct {
		ID       func(childComplexity int) int
		ImageURL func(childComplexity int) int
		Name     func(childComplexity int) int
		RealName func(childComplexity int) int
	}

	Source struct {
		Config      func(childComplexity int) int
		CreatedAt   func(childComplexity int) int
		Description func(childComplexity int) int
		Enabled     func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
		SourceType  func(childComplexity int) int
		UpdatedAt   func(childComplexity int) int
	}

	Tag struct {
		CreatedAt func(childComplexity int) int
		ID        func(childComplexity int) int
		Name      func(childComplexity int) int
		UpdatedAt func(childComplexity int) int
	}

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

	WorkspaceGroup struct {
		Description func(childComplexity int) int
		ID          func(childComplexity int) int
		Name        func(childComplexity int) int
		Workspaces  func(childComplexity int) int
	}
}

type DataLoaders

type DataLoaders struct {
	SlackUser                   *dataloader.Loader[string, *graphql1.SlackUser]
	SlackChannelName            *dataloader.Loader[string, *string]
	Action                      *dataloader.Loader[actionKey, *model.Action]
	Case                        *dataloader.Loader[caseKey, *model.Case]
	ActiveActionsByCaseLoader   *dataloader.Loader[actionsByCaseKey, []*model.Action]
	ArchivedActionsByCaseLoader *dataloader.Loader[actionsByCaseKey, []*model.Action]
	AllActionsByCaseLoader      *dataloader.Loader[actionsByCaseKey, []*model.Action]
}

DataLoaders bundles every request-scoped batching loader the GraphQL resolvers use. A fresh instance is constructed per HTTP request by the dataloader middleware (see cli/serve.go); the loaders MUST NOT be reused across requests - their internal cache would otherwise leak data from one user's view into another's.

func GetDataLoaders

func GetDataLoaders(ctx context.Context) *DataLoaders

GetDataLoaders retrieves DataLoaders from context. Panics if no loaders are bound - every GraphQL request goes through the dataloader middleware, so an unset value indicates a wiring bug rather than an expected runtime condition.

func NewDataLoaders

func NewDataLoaders(repo interfaces.Repository, slackSvc slacksvc.Service) *DataLoaders

NewDataLoaders constructs a fresh set of request-scoped loaders. slackSvc may be nil when Slack is not configured; in that case the channel-name loader returns nil for every key (matching the old per-resolver behaviour).

func (*DataLoaders) ActionsByCaseLoaderForScope

func (d *DataLoaders) ActionsByCaseLoaderForScope(scope interfaces.ActionArchiveScope) *dataloader.Loader[actionsByCaseKey, []*model.Action]

ActionsByCaseLoaderForScope picks the right per-case dataloader for the given archive scope.

type DirectiveRoot

type DirectiveRoot struct {
}

type MemoResolver

type MemoResolver interface {
	Case(ctx context.Context, obj *graphql1.Memo) (*graphql1.Case, error)

	Fields(ctx context.Context, obj *graphql1.Memo) ([]*graphql1.FieldValue, error)
}

type MutationResolver

type MutationResolver interface {
	Noop(ctx context.Context) (*bool, error)
	CreateCase(ctx context.Context, workspaceID string, input graphql1.CreateCaseInput) (*graphql1.Case, error)
	UpdateCase(ctx context.Context, workspaceID string, input graphql1.UpdateCaseInput) (*graphql1.Case, error)
	AssignCase(ctx context.Context, workspaceID string, id int, userIDs []string) (*graphql1.Case, error)
	UnassignCase(ctx context.Context, workspaceID string, id int, userIDs []string) (*graphql1.Case, error)
	DeleteCase(ctx context.Context, workspaceID string, id int) (bool, error)
	CloseCase(ctx context.Context, workspaceID string, id int) (*graphql1.Case, error)
	ReopenCase(ctx context.Context, workspaceID string, id int) (*graphql1.Case, error)
	UpdateCaseStatus(ctx context.Context, workspaceID string, input graphql1.UpdateCaseStatusInput) (*graphql1.Case, error)
	SyncCaseChannelUsers(ctx context.Context, workspaceID string, id int) (*graphql1.Case, error)
	CreateDraft(ctx context.Context, workspaceID string, input graphql1.CreateDraftInput) (*graphql1.Case, error)
	SubmitDraft(ctx context.Context, workspaceID string, id int, input *graphql1.SubmitDraftInput) (*graphql1.Case, error)
	DiscardDraft(ctx context.Context, workspaceID string, id int) (bool, error)
	CreateAction(ctx context.Context, workspaceID string, input graphql1.CreateActionInput) (*graphql1.Action, error)
	UpdateAction(ctx context.Context, workspaceID string, input graphql1.UpdateActionInput) (*graphql1.Action, error)
	ArchiveAction(ctx context.Context, workspaceID string, id int) (*graphql1.Action, error)
	UnarchiveAction(ctx context.Context, workspaceID string, id int) (*graphql1.Action, error)
	BulkArchiveActions(ctx context.Context, workspaceID string, ids []int) ([]int, error)
	PostActionSlackMessage(ctx context.Context, workspaceID string, id int) (*graphql1.Action, error)
	AddActionStep(ctx context.Context, workspaceID string, input graphql1.AddActionStepInput) (*graphql1.ActionStep, error)
	SetActionStepDone(ctx context.Context, workspaceID string, input graphql1.SetActionStepDoneInput) (*graphql1.ActionStep, error)
	RenameActionStep(ctx context.Context, workspaceID string, input graphql1.RenameActionStepInput) (*graphql1.ActionStep, error)
	DeleteActionStep(ctx context.Context, workspaceID string, input graphql1.DeleteActionStepInput) (bool, error)
	CreateNotionDBSource(ctx context.Context, workspaceID string, input graphql1.CreateNotionDBSourceInput) (*graphql1.Source, error)
	CreateNotionPageSource(ctx context.Context, workspaceID string, input graphql1.CreateNotionPageSourceInput) (*graphql1.Source, error)
	CreateSlackSource(ctx context.Context, workspaceID string, input graphql1.CreateSlackSourceInput) (*graphql1.Source, error)
	CreateGitHubSource(ctx context.Context, workspaceID string, input graphql1.CreateGitHubSourceInput) (*graphql1.Source, error)
	UpdateSource(ctx context.Context, workspaceID string, input graphql1.UpdateSourceInput) (*graphql1.Source, error)
	UpdateSlackSource(ctx context.Context, workspaceID string, input graphql1.UpdateSlackSourceInput) (*graphql1.Source, error)
	UpdateGitHubSource(ctx context.Context, workspaceID string, input graphql1.UpdateGitHubSourceInput) (*graphql1.Source, error)
	UpdateNotionDBSource(ctx context.Context, workspaceID string, input graphql1.UpdateNotionDBSourceInput) (*graphql1.Source, error)
	UpdateNotionPageSource(ctx context.Context, workspaceID string, input graphql1.UpdateNotionPageSourceInput) (*graphql1.Source, error)
	DeleteSource(ctx context.Context, workspaceID string, id string) (bool, error)
	ValidateNotionDb(ctx context.Context, workspaceID string, databaseID string) (*graphql1.NotionDBValidationResult, error)
	ValidateNotionPage(ctx context.Context, workspaceID string, pageID string) (*graphql1.NotionPageValidationResult, error)
	UpdateCaseAgentSettings(ctx context.Context, workspaceID string, input graphql1.UpdateCaseAgentSettingsInput) (*graphql1.Case, error)
	CreateCaseImport(ctx context.Context, workspaceID string, input graphql1.CreateCaseImportInput) (*graphql1.ImportSession, error)
	ExecuteCaseImport(ctx context.Context, workspaceID string, id string) (*graphql1.ImportSession, error)
	CreateMemo(ctx context.Context, workspaceID string, input graphql1.CreateMemoInput) (*graphql1.Memo, error)
	UpdateMemo(ctx context.Context, workspaceID string, input graphql1.UpdateMemoInput) (*graphql1.Memo, error)
	ArchiveMemo(ctx context.Context, workspaceID string, caseID int, id string) (*graphql1.Memo, error)
	UnarchiveMemo(ctx context.Context, workspaceID string, caseID int, id string) (*graphql1.Memo, error)
	CreateKnowledge(ctx context.Context, workspaceID string, input graphql1.CreateKnowledgeInput) (*graphql1.Knowledge, error)
	UpdateKnowledge(ctx context.Context, workspaceID string, input graphql1.UpdateKnowledgeInput) (*graphql1.Knowledge, error)
	DeleteKnowledge(ctx context.Context, workspaceID string, id string) (bool, error)
	CreateTag(ctx context.Context, workspaceID string, name *string) (*graphql1.Tag, error)
	UpdateTag(ctx context.Context, workspaceID string, id string, name *string) (*graphql1.Tag, error)
	DeleteTag(ctx context.Context, workspaceID string, id string) (bool, error)
	SetFavoriteWorkspaces(ctx context.Context, workspaceIds []string) ([]string, error)
}

type QueryResolver

type QueryResolver interface {
	Health(ctx context.Context) (string, error)
	Workspace(ctx context.Context, workspaceID string) (*graphql1.Workspace, error)
	Workspaces(ctx context.Context) ([]*graphql1.Workspace, error)
	WorkspaceGroups(ctx context.Context) ([]*graphql1.WorkspaceGroup, error)
	Cases(ctx context.Context, workspaceID string, status *types.CaseStatus) ([]*graphql1.Case, error)
	Case(ctx context.Context, workspaceID string, id int) (*graphql1.Case, error)
	Drafts(ctx context.Context, workspaceID string) ([]*graphql1.Case, error)
	ReferenceableCases(ctx context.Context, workspaceID string, query *string, limit *int) ([]*graphql1.CaseRef, error)
	CaseRefsByIds(ctx context.Context, workspaceID string, ids []int) ([]*graphql1.CaseRef, error)
	Actions(ctx context.Context, workspaceID string, filter *graphql1.ActionArchiveFilter) ([]*graphql1.Action, error)
	Action(ctx context.Context, workspaceID string, id int) (*graphql1.Action, error)
	ActionsByCase(ctx context.Context, workspaceID string, caseID int, filter *graphql1.ActionArchiveFilter) ([]*graphql1.Action, error)
	OpenCaseActions(ctx context.Context, workspaceID string) ([]*graphql1.Action, error)
	FieldConfiguration(ctx context.Context, workspaceID string) (*graphql1.FieldConfiguration, error)
	CaseStatusConfig(ctx context.Context, workspaceID string) (*graphql1.ActionConfig, error)
	SlackUsers(ctx context.Context) ([]*graphql1.SlackUser, error)
	SlackJoinedChannels(ctx context.Context) ([]*graphql1.SlackChannelInfo, error)
	Sources(ctx context.Context, workspaceID string) ([]*graphql1.Source, error)
	Source(ctx context.Context, workspaceID string, id string) (*graphql1.Source, error)
	ValidateGitHubRepo(ctx context.Context, workspaceID string, repository string) (*graphql1.GitHubRepoValidationResult, error)
	AssistLogs(ctx context.Context, workspaceID string, caseID int, limit *int, offset *int) (*graphql1.AssistLogConnection, error)
	CaseJobRunLogs(ctx context.Context, workspaceID string, caseID int, first *int, after *string) (*graphql1.JobRunLogConnection, error)
	JobRunLog(ctx context.Context, workspaceID string, caseID int, runID string) (*graphql1.JobRunLog, error)
	JobRunEvents(ctx context.Context, workspaceID string, caseID int, runID string) ([]*graphql1.JobRunEvent, error)
	CaseJobs(ctx context.Context, workspaceID string, caseID int) ([]*graphql1.CaseJob, error)
	CaseImport(ctx context.Context, workspaceID string, id string) (*graphql1.ImportSession, error)
	MemosByCase(ctx context.Context, workspaceID string, caseID int, filter *graphql1.MemoArchiveFilter) ([]*graphql1.Memo, error)
	Memo(ctx context.Context, workspaceID string, caseID int, id string) (*graphql1.Memo, error)
	MemoConfiguration(ctx context.Context, workspaceID string) (*graphql1.MemoConfiguration, error)
	Knowledges(ctx context.Context, workspaceID string, tagIds []string) ([]*graphql1.Knowledge, error)
	Knowledge(ctx context.Context, workspaceID string, id string) (*graphql1.Knowledge, error)
	SearchKnowledge(ctx context.Context, workspaceID string, query string, tagIds []string, limit *int) ([]*graphql1.Knowledge, error)
	Tags(ctx context.Context, workspaceID string) ([]*graphql1.Tag, error)
	Tag(ctx context.Context, workspaceID string, id string) (*graphql1.Tag, error)
	MyOpenCases(ctx context.Context) ([]*graphql1.MyOpenCase, error)
	MyDueActions(ctx context.Context) ([]*graphql1.MyDueAction, error)
	FavoriteWorkspaceIds(ctx context.Context) ([]string, error)
	HomeMessage(ctx context.Context, clientTime time.Time, lang string) (*graphql1.HomeMessage, error)
}

type Resolver

type Resolver struct {
	UseCases *usecase.UseCases
	// contains filtered or unexported fields
}

func NewResolver

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

func (*Resolver) Action

func (r *Resolver) Action() ActionResolver

Action returns ActionResolver implementation.

func (*Resolver) ActionEvent

func (r *Resolver) ActionEvent() ActionEventResolver

ActionEvent returns ActionEventResolver implementation.

func (*Resolver) Case

func (r *Resolver) Case() CaseResolver

Case returns CaseResolver implementation.

func (*Resolver) Memo

func (r *Resolver) Memo() MemoResolver

Memo returns MemoResolver 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.

type ResolverRoot

type ResolverRoot interface {
	Action() ActionResolver
	ActionEvent() ActionEventResolver
	Case() CaseResolver
	Memo() MemoResolver
	Mutation() MutationResolver
	Query() QueryResolver
}

Jump to

Keyboard shortcuts

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