graph

package
v0.0.0-...-64ef656 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 10, 2025 License: Apache-2.0 Imports: 24 Imported by: 0

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

func AuthMiddleware(next http.Handler) http.Handler

AuthMiddleware extracts the JWT token from the Authorization header and adds it to the context

func GetAuthToken

func GetAuthToken(ctx context.Context) string

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

func NewResolver() (*Resolver, error)

NewResolver creates a new resolver with all the necessary gRPC clients

func (*Resolver) Close

func (r *Resolver) Close()

Close properly closes all gRPC connections

func (*Resolver) CreateAuthContext

func (r *Resolver) CreateAuthContext(ctx context.Context) context.Context

CreateAuthContext creates a new context with authentication metadata from the GraphQL context

func (*Resolver) GetAuthTokenForRequest

func (r *Resolver) GetAuthTokenForRequest(ctx context.Context) string

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
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL