Documentation
¶
Index ¶
- func NewExecutableSchema(cfg Config) graphql.ExecutableSchema
- type ComplexityRoot
- type Config
- type Constraints
- type Description
- type DirectiveRoot
- type Example
- type ExecutionResult
- type Language
- type Metadata
- type MutationResolver
- type QueryResolver
- type Resolver
- type ResolverRoot
- type Submission
- type Task
- type User
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewExecutableSchema ¶
func NewExecutableSchema(cfg Config) graphql.ExecutableSchema
NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.
Types ¶
type ComplexityRoot ¶
type ComplexityRoot struct {
Constraints struct {
MemoryLimitKb func(childComplexity int) int
TimeLimitMs func(childComplexity int) int
}
Description struct {
Examples func(childComplexity int) int
ID func(childComplexity int) int
Input func(childComplexity int) int
Notes func(childComplexity int) int
Output func(childComplexity int) int
Story func(childComplexity int) int
}
Example struct {
ID func(childComplexity int) int
Input func(childComplexity int) int
Output func(childComplexity int) int
}
ExecutionResult struct {
Stderr func(childComplexity int) int
Stdout func(childComplexity int) int
}
Language struct {
FullName func(childComplexity int) int
ID func(childComplexity int) int
MonacoID func(childComplexity int) int
}
Metadata struct {
Authors func(childComplexity int) int
Origin func(childComplexity int) int
}
Mutation struct {
CreateTask func(childComplexity int, name string, code string) int
DeleteTask func(childComplexity int, id string) int
EnqueueSubmission func(childComplexity int, taskID string, languageID string, code string, versionID *string) int
ExecuteCode func(childComplexity int, code string, languageID string) int
Login func(childComplexity int, username string, password string) int
Logout func(childComplexity int) int
Register func(childComplexity int, username string, password string, email string, firstName string, lastName string) int
UpdateTaskConstraints func(childComplexity int, id string, timeLimitMs *int, memoryLimitKb *int) int
UpdateTaskDescription func(childComplexity int, id string, code *string, name *string, story *string, input *string, output *string, notes *string) int
UpdateTaskExamples func(childComplexity int, id string, inputs []string, outputs []string) int
UpdateTaskMetadata func(childComplexity int, id string, authors []string, origin *string) int
}
Query struct {
GetPublishedTaskByCode func(childComplexity int, code string) int
GetRelevantTaskByID func(childComplexity int, id string) int
ListLanguages func(childComplexity int) int
ListPublishedTasks func(childComplexity int) int
ListSubmissions func(childComplexity int) int
ListTaskOrigins func(childComplexity int) int
ListTasks func(childComplexity int) int
Whoami func(childComplexity int) int
}
Submission struct {
Code func(childComplexity int) int
ID func(childComplexity int) int
Language func(childComplexity int) int
Task func(childComplexity int) int
}
Task struct {
Code func(childComplexity int) int
Constraints func(childComplexity int) int
CreatedAt func(childComplexity int) int
Description func(childComplexity int) int
ID func(childComplexity int) int
Metadata func(childComplexity int) int
Name func(childComplexity int) int
UpdatedAt func(childComplexity int) int
}
User struct {
Email func(childComplexity int) int
FirstName func(childComplexity int) int
ID func(childComplexity int) int
IsAdmin func(childComplexity int) int
LastName func(childComplexity int) int
Username func(childComplexity int) int
}
}
type Config ¶
type Config struct {
Resolvers ResolverRoot
Directives DirectiveRoot
Complexity ComplexityRoot
}
type Constraints ¶
type Description ¶
type DirectiveRoot ¶
type DirectiveRoot struct {
}
type ExecutionResult ¶
type MutationResolver ¶
type MutationResolver interface {
Login(ctx context.Context, username string, password string) (*User, error)
Register(ctx context.Context, username string, password string, email string, firstName string, lastName string) (*User, error)
Logout(ctx context.Context) (bool, error)
CreateTask(ctx context.Context, name string, code string) (*Task, error)
UpdateTaskMetadata(ctx context.Context, id string, authors []string, origin *string) (*Task, error)
UpdateTaskDescription(ctx context.Context, id string, code *string, name *string, story *string, input *string, output *string, notes *string) (*Task, error)
UpdateTaskExamples(ctx context.Context, id string, inputs []string, outputs []string) (*Task, error)
UpdateTaskConstraints(ctx context.Context, id string, timeLimitMs *int, memoryLimitKb *int) (*Task, error)
DeleteTask(ctx context.Context, id string) (*Task, error)
EnqueueSubmission(ctx context.Context, taskID string, languageID string, code string, versionID *string) (*Submission, error)
ExecuteCode(ctx context.Context, code string, languageID string) (*ExecutionResult, error)
}
type QueryResolver ¶
type QueryResolver interface {
Whoami(ctx context.Context) (*User, error)
ListTasks(ctx context.Context) ([]*Task, error)
ListPublishedTasks(ctx context.Context) ([]*Task, error)
GetRelevantTaskByID(ctx context.Context, id string) (*Task, error)
GetPublishedTaskByCode(ctx context.Context, code string) (*Task, error)
ListTaskOrigins(ctx context.Context) ([]string, error)
ListLanguages(ctx context.Context) ([]*Language, error)
ListSubmissions(ctx context.Context) ([]*Submission, error)
}
type Resolver ¶
type Resolver struct {
PostgresDB *sqlx.DB
SessionManager *scs.SessionManager
Logger *slog.Logger
SubmissionRMQ *amqp.Connection
}
func (*Resolver) GetUserFromContext ¶
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 {
Mutation() MutationResolver
Query() QueryResolver
}
type Submission ¶
type Task ¶
type Task struct {
ID string `json:"id"`
Code string `json:"code"`
Name string `json:"name"`
Description *Description `json:"Description"`
Constraints *Constraints `json:"Constraints"`
Metadata *Metadata `json:"Metadata"`
CreatedAt string `json:"createdAt"`
UpdatedAt string `json:"updatedAt"`
}
Click to show internal directories.
Click to hide internal directories.