Documentation
¶
Index ¶
- Constants
- Variables
- func ErrorCode(err error) string
- func ErrorExtensions(err error) map[string]any
- func IsClientError(err error) bool
- func MakeActionKey(workspaceID string, id int64) actionKey
- func MakeActionsByCaseKey(workspaceID string, caseID int64) actionsByCaseKey
- func MakeCaseKey(workspaceID string, id int64) caseKey
- func MarshalAny(v any) graphql.Marshaler
- func MarshalJSON(v map[string]any) graphql.Marshaler
- func MarshalTime(t time.Time) graphql.Marshaler
- func NewExecutableSchema(cfg Config) graphql.ExecutableSchema
- func UnmarshalAny(v interface{}) (any, error)
- func UnmarshalJSON(v interface{}) (map[string]any, error)
- func UnmarshalTime(v interface{}) (time.Time, error)
- func WithDataLoaders(ctx context.Context, loaders *DataLoaders) context.Context
- type ActionEventResolver
- type ActionResolver
- type CaseResolver
- type ComplexityRoot
- type Config
- type DataLoaders
- type DirectiveRoot
- type MemoResolver
- type MutationResolver
- type QueryResolver
- type Resolver
- type ResolverRoot
Constants ¶
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.
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
MakeActionKey constructs an action loader key.
func MakeActionsByCaseKey ¶
MakeActionsByCaseKey constructs an actions-by-case loader key.
func MakeCaseKey ¶
MakeCaseKey constructs a case loader key.
func MarshalJSON ¶
MarshalJSON serializes map[string]any to JSON
func MarshalTime ¶
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 ¶
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 ¶
UnmarshalJSON deserializes JSON to map[string]any
func UnmarshalTime ¶
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 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 Config ¶
type Config = graphql.Config[ResolverRoot, DirectiveRoot, ComplexityRoot]
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 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 ¶
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
}