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.