Documentation
¶
Index ¶
Constants ¶
View Source
const (
// AuthTokenKey is the key used to store the auth token in the context
AuthTokenKey = contextKey("auth_token")
)
Variables ¶
This section is empty.
Functions ¶
func AuthMiddleware ¶
AuthMiddleware extracts the JWT token from the Authorization header and adds it to the context
func GetAuthToken ¶
GetAuthToken gets the auth token from the GraphQL context
func NewExecutableSchema ¶
func NewExecutableSchema(cfg Config) graphql.ExecutableSchema
NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.
Types ¶
type ComplexityRoot ¶
type ComplexityRoot struct {
Announcement struct {
Content func(childComplexity int) int
CourseID func(childComplexity int) int
CreatedAt func(childComplexity int) int
ID func(childComplexity int) int
Title func(childComplexity int) int
UpdatedAt func(childComplexity int) int
}
Course struct {
Announcements func(childComplexity int) int
CreatedAt func(childComplexity int) int
Description func(childComplexity int) int
Grades func(childComplexity int) int
Homework func(childComplexity int) int
ID func(childComplexity int) int
Name func(childComplexity int) int
Semester func(childComplexity int) int
Staff func(childComplexity int) int
Students func(childComplexity int) int
UpdatedAt func(childComplexity int) int
}
Grade struct {
Comments func(childComplexity int) int
CourseID func(childComplexity int) int
GradeType func(childComplexity int) int
GradeValue func(childComplexity int) int
GradedAt func(childComplexity int) int
GradedBy func(childComplexity int) int
ID func(childComplexity int) int
ItemID func(childComplexity int) int
Semester func(childComplexity int) int
StudentID func(childComplexity int) int
UpdatedAt func(childComplexity int) int
}
Homework struct {
CourseID func(childComplexity int) int
CreatedAt func(childComplexity int) int
Description func(childComplexity int) int
DueDate func(childComplexity int) int
ID func(childComplexity int) int
Title func(childComplexity int) int
UpdatedAt func(childComplexity int) int
Workflow func(childComplexity int) int
}
Mutation struct {
AddStaffToCourse func(childComplexity int, courseID string, staffID string) int
AddStudentToCourse func(childComplexity int, courseID string, studentID string) int
CreateAnnouncement func(childComplexity int, input model.NewAnnouncement) int
CreateCourse func(childComplexity int, input model.NewCourse) int
CreateGrade func(childComplexity int, input model.NewGrade) int
CreateHomework func(childComplexity int, input model.NewHomework) int
CreateStaff func(childComplexity int, input model.NewStaff) int
CreateStudent func(childComplexity int, input model.NewStudent) int
DeleteAnnouncement func(childComplexity int, courseID string, announcementID string) int
DeleteCourse func(childComplexity int, id string) int
DeleteGrade func(childComplexity int, id string, courseID string, semester string, studentID string, gradeType string, itemID string) int
DeleteStaff func(childComplexity int, id string) int
DeleteStudent func(childComplexity int, id string) int
RemoveStaffFromCourse func(childComplexity int, courseID string, staffID string) int
RemoveStudentFromCourse func(childComplexity int, courseID string, studentID string) int
SubmitHomework func(childComplexity int, homeworkID string, studentID string) int
UpdateCourse func(childComplexity int, id string, input model.UpdateCourse) int
UpdateGrade func(childComplexity int, id string, input model.UpdateGrade) int
UpdateStaff func(childComplexity int, id string, input model.UpdateStaff) int
UpdateStudent func(childComplexity int, id string, input model.UpdateStudent) int
}
Query struct {
Announcement func(childComplexity int, id string) int
AnnouncementsByCourse func(childComplexity int, courseID string) int
Course func(childComplexity int, id string) int
CourseGrades func(childComplexity int, courseID string, semester string) int
CourseStaff func(childComplexity int, courseID string) int
CourseStudents func(childComplexity int, courseID string) int
Grade func(childComplexity int, id string) int
Grades func(childComplexity int, studentID *string, courseID *string) int
Homework func(childComplexity int, id string) int
HomeworkByCourse func(childComplexity int, courseID string) int
SemesterCourses func(childComplexity int, semester string) int
Staff func(childComplexity int, id string) int
StaffCourses func(childComplexity int, staffID string) int
Student func(childComplexity int, id string) int
StudentCourseGrades func(childComplexity int, studentID string, courseID string, semester string) int
StudentCourses func(childComplexity int, studentID string) int
StudentSemesterGrades func(childComplexity int, studentID string, semester string) int
Submission func(childComplexity int, id string) int
SubmissionsByStudent func(childComplexity int, studentID string) int
}
Staff struct {
Courses func(childComplexity int) int
CreatedAt func(childComplexity int) int
Email func(childComplexity int) int
FirstName func(childComplexity int) int
ID func(childComplexity int) int
LastName func(childComplexity int) int
Office func(childComplexity int) int
PhoneNumber func(childComplexity int) int
Title func(childComplexity int) int
UpdatedAt func(childComplexity int) int
}
Student struct {
Courses func(childComplexity int) int
CreatedAt func(childComplexity int) int
Email func(childComplexity int) int
FirstName func(childComplexity int) int
ID func(childComplexity int) int
LastName func(childComplexity int) int
PhoneNumber func(childComplexity int) int
UpdatedAt func(childComplexity int) int
}
Submission struct {
HomeworkID func(childComplexity int) int
ID func(childComplexity int) int
StudentID func(childComplexity int) int
SubmittedAt func(childComplexity int) int
UpdatedAt func(childComplexity int) int
}
}
type Config ¶
type Config struct {
Schema *ast.Schema
Resolvers ResolverRoot
Directives DirectiveRoot
Complexity ComplexityRoot
}
type DirectiveRoot ¶
type DirectiveRoot struct {
}
type MutationResolver ¶
type MutationResolver interface {
CreateStudent(ctx context.Context, input model.NewStudent) (*model.Student, error)
UpdateStudent(ctx context.Context, id string, input model.UpdateStudent) (*model.Student, error)
DeleteStudent(ctx context.Context, id string) (bool, error)
CreateStaff(ctx context.Context, input model.NewStaff) (*model.Staff, error)
UpdateStaff(ctx context.Context, id string, input model.UpdateStaff) (*model.Staff, error)
DeleteStaff(ctx context.Context, id string) (bool, error)
CreateCourse(ctx context.Context, input model.NewCourse) (*model.Course, error)
UpdateCourse(ctx context.Context, id string, input model.UpdateCourse) (*model.Course, error)
DeleteCourse(ctx context.Context, id string) (bool, error)
AddStudentToCourse(ctx context.Context, courseID string, studentID string) (bool, error)
RemoveStudentFromCourse(ctx context.Context, courseID string, studentID string) (bool, error)
AddStaffToCourse(ctx context.Context, courseID string, staffID string) (bool, error)
RemoveStaffFromCourse(ctx context.Context, courseID string, staffID string) (bool, error)
CreateGrade(ctx context.Context, input model.NewGrade) (*model.Grade, error)
UpdateGrade(ctx context.Context, id string, input model.UpdateGrade) (*model.Grade, error)
DeleteGrade(ctx context.Context, id string, courseID string, semester string, studentID string, gradeType string, itemID string) (bool, error)
CreateHomework(ctx context.Context, input model.NewHomework) (*model.Homework, error)
SubmitHomework(ctx context.Context, homeworkID string, studentID string) (*model.Submission, error)
CreateAnnouncement(ctx context.Context, input model.NewAnnouncement) (*model.Announcement, error)
DeleteAnnouncement(ctx context.Context, courseID string, announcementID string) (bool, error)
}
type QueryResolver ¶
type QueryResolver interface {
Student(ctx context.Context, id string) (*model.Student, error)
Staff(ctx context.Context, id string) (*model.Staff, error)
Course(ctx context.Context, id string) (*model.Course, error)
CourseStudents(ctx context.Context, courseID string) ([]*model.Student, error)
CourseStaff(ctx context.Context, courseID string) ([]*model.Staff, error)
StudentCourses(ctx context.Context, studentID string) ([]*model.Course, error)
StaffCourses(ctx context.Context, staffID string) ([]*model.Course, error)
SemesterCourses(ctx context.Context, semester string) ([]*model.Course, error)
Grade(ctx context.Context, id string) (*model.Grade, error)
Grades(ctx context.Context, studentID *string, courseID *string) ([]*model.Grade, error)
CourseGrades(ctx context.Context, courseID string, semester string) ([]*model.Grade, error)
StudentCourseGrades(ctx context.Context, studentID string, courseID string, semester string) ([]*model.Grade, error)
StudentSemesterGrades(ctx context.Context, studentID string, semester string) ([]*model.Grade, error)
Homework(ctx context.Context, id string) (*model.Homework, error)
HomeworkByCourse(ctx context.Context, courseID string) ([]*model.Homework, error)
Submission(ctx context.Context, id string) (*model.Submission, error)
SubmissionsByStudent(ctx context.Context, studentID string) ([]*model.Submission, error)
Announcement(ctx context.Context, id string) (*model.Announcement, error)
AnnouncementsByCourse(ctx context.Context, courseID string) ([]*model.Announcement, error)
}
type Resolver ¶
type Resolver struct {
StudentsClient studentspb.StudentsServiceClient
StaffClient staffpb.StaffServiceClient
CoursesClient coursespb.CoursesServiceClient
GradesClient gradespb.GradesServiceClient
// contains filtered or unexported fields
}
func NewResolver ¶
NewResolver creates a new resolver with all the necessary gRPC clients
func (*Resolver) CreateAuthContext ¶
CreateAuthContext creates a new context with authentication metadata from the GraphQL context
func (*Resolver) GetAuthTokenForRequest ¶
GetAuthTokenForRequest extracts the auth token for use in request messages
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
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.