Documentation ¶
Index ¶
- Variables
- func NewExecutableSchema(cfg Config) graphql.ExecutableSchema
- type CompilationDetails
- type ComplexityRoot
- type Config
- type Constraints
- type Description
- type DirectiveRoot
- type Evaluation
- type Example
- type ExecutionResult
- type Metadata
- type MutationResolver
- type ProgrammingLanguage
- type QueryResolver
- type Resolver
- type ResolverRoot
- type RuntimeStatistics
- type Submission
- type Task
- type Test
- type TestResult
- type TestResultType
- type User
Constants ¶
This section is empty.
Variables ¶
View Source
var AllTestResultType = []TestResultType{ TestResultTypeAc, TestResultTypePt, TestResultTypeWa, TestResultTypePe, TestResultTypeTle, TestResultTypeMle, TestResultTypeIle, TestResultTypeIg, TestResultTypeRe, TestResultTypeSv, TestResultTypeIse, }
Functions ¶
func NewExecutableSchema ¶
func NewExecutableSchema(cfg Config) graphql.ExecutableSchema
NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.
Types ¶
type CompilationDetails ¶ added in v0.2.2
type ComplexityRoot ¶
type ComplexityRoot struct { CompilationDetails struct { ExitCode func(childComplexity int) int MemoryKb func(childComplexity int) int Stderr func(childComplexity int) int Stdout func(childComplexity int) int TimeMs func(childComplexity int) int } 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 } Evaluation struct { Compilation func(childComplexity int) int ID func(childComplexity int) int PossibleScore func(childComplexity int) int RuntimeStatistics func(childComplexity int) int Status func(childComplexity int) int TestResults func(childComplexity int) int TotalScore func(childComplexity int) int } Example struct { Answer func(childComplexity int) int ID func(childComplexity int) int Input func(childComplexity int) int } ExecutionResult struct { Stderr func(childComplexity int) int Stdout 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 EnqueueSubmissionForPublishedTaskVersion func(childComplexity int, taskID string, languageID string, submissionCode 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 PublishTask func(childComplexity int, id string) 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 } ProgrammingLanguage struct { Enabled func(childComplexity int) int FullName func(childComplexity int) int ID func(childComplexity int) int MonacoID func(childComplexity int) int } Query struct { GetCurrentTaskVersionByID func(childComplexity int, id string) int GetPublishedTaskVersionByCode func(childComplexity int, code string) int GetSubmission func(childComplexity int, id string) int ListEditableTasks func(childComplexity int) int ListLanguages func(childComplexity int, enabled *bool) int ListPublicSubmissions func(childComplexity int) int ListPublishedTasks func(childComplexity int) int Whoami func(childComplexity int) int } RuntimeStatistics struct { AvgMemoryKb func(childComplexity int) int AvgTimeMs func(childComplexity int) int MaxMemoryKb func(childComplexity int) int MaxTimeMs func(childComplexity int) int } Submission struct { CreatedAt func(childComplexity int) int Evaluation func(childComplexity int) int ID func(childComplexity int) int Language func(childComplexity int) int Submission func(childComplexity int) int Task func(childComplexity int) int Username 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 Solved func(childComplexity int) int Tests func(childComplexity int) int UpdatedAt func(childComplexity int) int } Test struct { Answer func(childComplexity int) int ID func(childComplexity int) int Input func(childComplexity int) int Name func(childComplexity int) int } TestResult struct { MemoryKb func(childComplexity int) int Result func(childComplexity int) int TimeMs 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 { Schema *ast.Schema Resolvers ResolverRoot Directives DirectiveRoot Complexity ComplexityRoot }
type Constraints ¶
type Description ¶
type DirectiveRoot ¶
type DirectiveRoot struct { }
type Evaluation ¶ added in v0.2.0
type Evaluation struct { ID string `json:"id"` Status string `json:"status"` TotalScore int `json:"totalScore"` PossibleScore *int `json:"possibleScore,omitempty"` RuntimeStatistics *RuntimeStatistics `json:"runtimeStatistics,omitempty"` // Some programming languages do not support compilation, so this field may be null. Compilation *CompilationDetails `json:"compilation,omitempty"` TestResults []*TestResult `json:"testResults"` }
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) PublishTask(ctx context.Context, id string) (*Task, error) DeleteTask(ctx context.Context, id string) (*Task, error) EnqueueSubmissionForPublishedTaskVersion(ctx context.Context, taskID string, languageID string, submissionCode string) (*Submission, error) ExecuteCode(ctx context.Context, code string, languageID string) (*ExecutionResult, error) }
type ProgrammingLanguage ¶ added in v0.2.0
type QueryResolver ¶
type QueryResolver interface { Whoami(ctx context.Context) (*User, error) ListPublishedTasks(ctx context.Context) ([]*Task, error) GetPublishedTaskVersionByCode(ctx context.Context, code string) (*Task, error) ListEditableTasks(ctx context.Context) ([]*Task, error) GetCurrentTaskVersionByID(ctx context.Context, id string) (*Task, error) ListLanguages(ctx context.Context, enabled *bool) ([]*ProgrammingLanguage, error) ListPublicSubmissions(ctx context.Context) ([]*Submission, error) GetSubmission(ctx context.Context, id string) (*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 RuntimeStatistics ¶ added in v0.2.2
type Submission ¶
type Submission struct { ID string `json:"id"` Task *Task `json:"task"` Language *ProgrammingLanguage `json:"language"` Submission string `json:"submission"` Evaluation *Evaluation `json:"evaluation"` Username string `json:"username"` CreatedAt string `json:"createdAt"` }
type Task ¶
type Task struct { // The id of the task. Not the task version. ID string `json:"id"` Code string `json:"code"` Name string `json:"name"` Description *Description `json:"description"` Constraints *Constraints `json:"constraints"` Metadata *Metadata `json:"metadata"` Solved *bool `json:"solved,omitempty"` Tests []*Test `json:"tests"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` }
type TestResult ¶ added in v0.2.2
type TestResult struct { TimeMs int `json:"timeMs"` MemoryKb int `json:"memoryKb"` Result TestResultType `json:"result"` }
type TestResultType ¶ added in v0.2.2
type TestResultType string
const ( TestResultTypeAc TestResultType = "AC" TestResultTypePt TestResultType = "PT" TestResultTypeWa TestResultType = "WA" TestResultTypePe TestResultType = "PE" TestResultTypeTle TestResultType = "TLE" TestResultTypeMle TestResultType = "MLE" TestResultTypeIle TestResultType = "ILE" TestResultTypeIg TestResultType = "IG" TestResultTypeRe TestResultType = "RE" TestResultTypeSv TestResultType = "SV" TestResultTypeIse TestResultType = "ISE" )
func (TestResultType) IsValid ¶ added in v0.2.2
func (e TestResultType) IsValid() bool
func (TestResultType) MarshalGQL ¶ added in v0.2.2
func (e TestResultType) MarshalGQL(w io.Writer)
func (TestResultType) String ¶ added in v0.2.2
func (e TestResultType) String() string
func (*TestResultType) UnmarshalGQL ¶ added in v0.2.2
func (e *TestResultType) UnmarshalGQL(v interface{}) error
Click to show internal directories.
Click to hide internal directories.