api

package
v0.0.0-...-16c2cb2 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2024 License: AGPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

Predefined roleGroups

Functions

func RegisterV1Courses

func RegisterV1Courses(g *echo.Group, c *CourseController)

register all output endpoints to router

func RegisterV1Curriculums

func RegisterV1Curriculums(g *echo.Group, c *CurriculumController)

register all output endpoints to router

func RegisterV1Exams

func RegisterV1Exams(g *echo.Group, c *ExamController)

register all output endpoints to router

func RegisterV1GradeTypes

func RegisterV1GradeTypes(g *echo.Group, c *GradeTypeController)

register all output endpoints to router

func RegisterV1MetaCourse

func RegisterV1MetaCourse(g *echo.Group, m *MetaController)

register all output endpoints to router

func RegisterV1Modules

func RegisterV1Modules(g *echo.Group, c *ModuleController)

register all output endpoints to router

func RegisterV1Output

func RegisterV1Output(g *echo.Group, o *OutputController)

register all output endpoints to router

func RegisterV1User

func RegisterV1User(g *echo.Group, u *UserController)

register all output endpoints to router

Types

type BaseController

type BaseController struct {
	Provider db.Provider
	UserDao  *dao.UserDao
}

Controller is the base controller for all API controllers

func NewBaseController

func NewBaseController(provider db.Provider) *BaseController

Constructor for BaseController

func (*BaseController) CheckUserAnyRole

func (c *BaseController) CheckUserAnyRole(ctx echo.Context) *e.ApiError

Allows the user to access the endpoint if the user has any role returns nil if the claim is valid

func (*BaseController) CheckUserRole

func (c *BaseController) CheckUserRole(roleId uint, ctx echo.Context) *e.ApiError

check if a user has a role by roleId returns nil if the claim is valid

func (*BaseController) CheckUserRoles

func (c *BaseController) CheckUserRoles(roleIDs []uint, ctx echo.Context) *e.ApiError

CheckUserRoles loops through multiple roles to check if any is correct. If a correct role is found, it returns nil; otherwise, it returns an error.

func (*BaseController) GetPathParam

func (c *BaseController) GetPathParam(ctx echo.Context, param string) string

Gets the parameter from the request

func (*BaseController) GetPathParamTime

func (c *BaseController) GetPathParamTime(ctx echo.Context, param string) (time.Time, error)

GetPathParamTime retrieves the value of a path parameter from the given context and parses it as a time.Time value. It expects the path parameter to be in the format "30.07.2024". If the parsing is successful, it returns the parsed time.Time value. If the parsing fails, it returns an error.

func (*BaseController) GetPathParamUint

func (c *BaseController) GetPathParamUint(ctx echo.Context, param string) (uint, error)

Gets the parameter from the request and converts it to an integer Returns -1 if the conversion fails

func (*BaseController) GetUser

func (c *BaseController) GetUser(ctx echo.Context) (*models.User, *e.ApiError)

Retrieves the user from the requests bearer token Ensures that the user is authenticated and exists in the database Handles the unauthorized and forbidden errors

func (*BaseController) Yeet

func (c *BaseController) Yeet(ctx echo.Context, data any) error

Yeets the data out of the controller to the client

type CourseController

type CourseController struct {
	*BaseController
	Dao *dao.CourseDao
}

Handles the requests for the course resource

func NewCourseController

func NewCourseController(provider db.Provider) *CourseController

Constructor for CourseController

func (*CourseController) Course

func (c *CourseController) Course(ctx echo.Context) error

@Summary Get a specific course @Description Get a specific course @Tags courses @Param id path uint true "Course ID" @Param version path uint true "Course Version" @Produce json @Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id}/{version} [get] @Security Bearer

func (*CourseController) Courses

func (c *CourseController) Courses(ctx echo.Context) error

@Summary Get all courses @Description Get all courses @Tags courses @Produce json @Success 200 {array} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses [get] @Security Bearer

func (*CourseController) Create

func (c *CourseController) Create(ctx echo.Context) error

@Summary Create a course @Description Create a course @Tags courses @Produce json @Accept json

@Param request body requestmodels.RefCourse true "request body"

@Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses [post] @Security Bearer

func (*CourseController) CreateVersion

func (c *CourseController) CreateVersion(ctx echo.Context) error

@Summary Create a new version of a course @Description Create a new version of a course @Tags courses @Produce json @Accept json

@Param request body requestmodels.RefCourse true "request body" @Param id path uint true "Course ID"

@Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id} [post] @Security Bearer

func (*CourseController) Delete

func (c *CourseController) Delete(ctx echo.Context) error

@Summary Delete a course @Description Delete a course @Tags courses @Produce json @Accept json

@Param id path uint true "Course ID" @Param version path uint true "Course Version"

@Success 200 @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id}/{version} [delete] @Security Bearer

func (*CourseController) Update

func (c *CourseController) Update(ctx echo.Context) error

@Summary Update a course @Description Update a course @Tags courses @Produce json @Accept json

@Param request body requestmodels.RefCourse true "request body" @Param id path uint true "Course ID" @Param version path uint true "Course Version"

@Success 200 {object} models.Course @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/{id}/{version} [put] @Security Bearer

type CurriculumController

type CurriculumController struct {
	*BaseController
	Dao *dao.CurriculumDao
}

Handles the requests for the module resource

func NewCurriculumController

func NewCurriculumController(provider db.Provider) *CurriculumController

Constructor for ModuleController

func (*CurriculumController) Create

func (c *CurriculumController) Create(ctx echo.Context) error

@Summary Create a curriculum @Description Create a curriculum @Tags curriculums @Produce json @Accept json

@Param request body requestmodels.RefCurriculum true "request body"

@Success 200 {object} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums [post] @Security Bearer

func (*CurriculumController) Curriculum

func (c *CurriculumController) Curriculum(ctx echo.Context) error

@Summary Get a specific curriculum @Description Get a specific curriculum @Tags curriculums @Param id path uint true "Curriculum ID" @Param date path time.Time true "Curriculum StartValidity" @Produce json @Success 200 {object} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/{id}/{date} [get] @Security Bearer

func (*CurriculumController) Curriculums

func (c *CurriculumController) Curriculums(ctx echo.Context) error

@Summary Get all curriculums @Description Get all curriculums @Tags curriculums @Produce json @Success 200 {array} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums [get] @Security Bearer

func (*CurriculumController) Delete

func (c *CurriculumController) Delete(ctx echo.Context) error

@Summary Delete a curriculum @Description Delete a curriculum @Tags curriculums @Produce json @Accept json

@Param id path uint true "Curriculum ID" @Param date path time.Time true "Curriculum StartValidity"

@Success 200 @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/{id}/{date} [delete] @Security Bearer

func (*CurriculumController) Update

func (c *CurriculumController) Update(ctx echo.Context) error

@Summary Update a curriculum @Description Update a curriculum @Tags curriculums @Produce json @Accept json

@Param request body requestmodels.RefCurriculum true "request body" @Param id path uint true "Curriculum ID" @Param date path time.Time true "Curriculum StartValidity"

@Success 200 {object} models.Curriculum @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/{id}/{date} [put] @Security Bearer

type ExamController

type ExamController struct {
	*BaseController
	Dao *dao.ExamDao
}

Handles the requests for the exam resource

func NewExamController

func NewExamController(provider db.Provider) *ExamController

Constructor for ExamController

func (*ExamController) Exam

func (c *ExamController) Exam(ctx echo.Context) error

@Summary Get a specific exam @Description Get a specific exam @Tags exams @Param id path uint true "Exam ID" @Produce json @Success 200 {object} models.Exam @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /exams/{id} [get] @Security Bearer

func (*ExamController) Exams

func (c *ExamController) Exams(ctx echo.Context) error

@Summary Get all exams @Description Get all exams @Tags exams @Produce json @Success 200 {array} models.Exam @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /exams [get] @Security Bearer

type GradeTypeController

type GradeTypeController struct {
	*BaseController
	Dao *dao.GradeTypeDao
}

Handles the requests for the gradetype resource

func NewGradeTypeController

func NewGradeTypeController(provider db.Provider) *GradeTypeController

Constructor for GradeTypeController

func (*GradeTypeController) Create

func (c *GradeTypeController) Create(ctx echo.Context) error

@Summary Create a gradetype @Description Create a gradetype @Tags gradetype @Produce json @Accept json

@Param request body models.Gradetype true "request body"

@Success 200 {object} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes [post] @Security Bearer

func (*GradeTypeController) Delete

func (c *GradeTypeController) Delete(ctx echo.Context) error

@Summary Delete a gradetype @Description Delete a gradetype @Tags gradetypes @Produce json @Accept json

@Param id path uint true "GradeType ID"

@Success 200 @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes/{id} [delete] @Security Bearer

func (*GradeTypeController) GradeType

func (c *GradeTypeController) GradeType(ctx echo.Context) error

@Summary Get a specific gradetype @Description Get a specific gradetype @Tags gradetype @Param id path uint true "GradeType ID" @Produce json @Success 200 {object} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes/{id}/ [get] @Security Bearer

func (*GradeTypeController) GradeTypes

func (c *GradeTypeController) GradeTypes(ctx echo.Context) error

@Summary Get all gradetypes @Description Get all gradetypes @Tags gradetype @Produce json @Success 200 {array} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes [get] @Security Bearer

func (*GradeTypeController) Update

func (c *GradeTypeController) Update(ctx echo.Context) error

@Summary Update a gradetype @Description Update a gradetype @Tags grapetype @Produce json @Accept json

@Param request body models.Gradetype true "request body" @Param id path uint true "GradeType ID"

@Success 200 {object} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes/{id} [put] @Security Bearer

type MetaController

type MetaController struct {
	*BaseController
	// contains filtered or unexported fields
}

Handles the requests for the meta resources

func NewMetaController

func NewMetaController(provider db.Provider) *MetaController

Constructor for MetaController

func (*MetaController) MetaCourses

func (m *MetaController) MetaCourses(ctx echo.Context) error

@Summary Get Metadata for Course @Description Get Metadata for Course @Tags meta, courses @Produce json @Success 200 {array} models.MetaCourse @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/meta [get] @Security Bearer

func (*MetaController) MetaCurriculums

func (c *MetaController) MetaCurriculums(ctx echo.Context) error

@Summary Get Metadata for Curriculums @Description Get Metadata for Curriculums @Tags meta, curriculums @Produce json @Success 200 {array} models.MetaCurriculums @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/meta [get] @Security Bearer

func (*MetaController) MetaModules

func (c *MetaController) MetaModules(ctx echo.Context) error

@Summary Get Metadata for Module @Description Get Metadata for Module @Tags meta, modules @Produce json @Success 200 {array} models.MetaModules @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/meta [get] @Security Bearer

func (*MetaController) MyCoursesAsTeacher

func (c *MetaController) MyCoursesAsTeacher(ctx echo.Context) error

@Summary Get your Courses as a teacher @Description Get Courses as a teacher selected by teached by userinfo from accesstoken @Tags meta, courses @Produce json @Success 200 {array} models.TeacherCourses @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /courses/teacher [get] @Security Bearer

func (*MetaController) MyCurriculumsAsStudent

func (c *MetaController) MyCurriculumsAsStudent(ctx echo.Context) error

@Summary Get Curriculums as a student @Description Get Curriculums as a student selected by userinfo from accesstoken @Tags meta, curriculums @Produce json @Success 200 {array} models.StudentCurriculums @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculums/student [get] @Security Bearer

func (c *MetaController) SetStudentCurriculumLink(ctx echo.Context) error

@Summary Set start year and curriculumId as student @Description Set start year and curriculumId as student by userinfo from accesstoken @Tags meta, curriculums, users @Param id path uint true "Curriculum ID" @Param date path time.Time true "Class start date" @Produce json @Success 200 {array} models.User @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /onboarding [put] @Security Bearer

type ModuleController

type ModuleController struct {
	*BaseController
	Dao *dao.ModuleDao
}

Handles the requests for the module resource

func NewModuleController

func NewModuleController(provider db.Provider) *ModuleController

Constructor for ModuleController

func (*ModuleController) Create

func (c *ModuleController) Create(ctx echo.Context) error

@Summary Create a module @Description Create a module @Tags modules @Produce json @Accept json

@Param request body requestmodels.RefModule true "request body"

@Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules [post] @Security Bearer

func (*ModuleController) CreateVersion

func (c *ModuleController) CreateVersion(ctx echo.Context) error

@Summary Create a new version of a module @Description Create a new version of a module @Tags modules @Produce json @Accept json

@Param request body requestmodels.RefModule true "request body" @Param id path uint true "Module ID"

@Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/{id} [post] @Security Bearer

func (*ModuleController) Delete

func (c *ModuleController) Delete(ctx echo.Context) error

func (*ModuleController) Module

func (c *ModuleController) Module(ctx echo.Context) error

@Summary Get a specific module @Description Get a specific module @Tags modules @Param id path uint true "Module ID" @Param version path uint true "Module Version" @Produce json @Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/{id}/{version} [get] @Security Bearer

func (*ModuleController) Modules

func (c *ModuleController) Modules(ctx echo.Context) error

@Summary Get all modules @Description Get all modules @Tags modules @Produce json @Success 200 {array} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules [get] @Security Bearer

func (*ModuleController) Update

func (c *ModuleController) Update(ctx echo.Context) error

@Summary Update a module @Description Update a module @Tags modules @Produce json @Accept json

@Param request body requestmodels.RefModule true "request body" @Param id path uint true "Module ID" @Param version path uint true "Module Version"

@Success 200 {object} models.Module @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /modules/{id}/{version} [put] @Security Bearer

type OutputController

type OutputController struct {
	*BaseController
	// contains filtered or unexported fields
}

All list outputs under one big object

func NewOutputController

func NewOutputController(provider db.Provider) *OutputController

Constructor for output controller

func (*OutputController) Curriculumtypes

func (c *OutputController) Curriculumtypes(ctx echo.Context) error

@Summary Get all curriculum types @Description Get all curriculum types @Tags curriculumtypes @Produce json @Success 200 {array} models.Curriculumtype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /curriculumtypes [get] @Security Bearer

func (*OutputController) Evaluationtypes

func (c *OutputController) Evaluationtypes(ctx echo.Context) error

@Summary Get all evaluation types @Description Get all evaluation types @Tags evaluationtypes @Produce json @Success 200 {array} models.Evaluationtype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /evaluationtypes [get] @Security Bearer

func (*OutputController) Examtypes

func (c *OutputController) Examtypes(ctx echo.Context) error

@Summary Get all exam types @Description Get all exam types @Tags examtypes @Produce json @Success 200 {array} models.Examtype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /examtypes [get] @Security Bearer

func (*OutputController) Fields

func (c *OutputController) Fields(ctx echo.Context) error

@Summary Get all fields @Description Get all fields @Tags fields @Produce json @Success 200 {array} models.Field @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /fields [get] @Security Bearer

func (*OutputController) Focuses

func (c *OutputController) Focuses(ctx echo.Context) error

@Summary Get all focuses @Description Get all focuses @Tags focuses @Produce json @Success 200 {array} models.Focus @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /focuses [get] @Security Bearer

func (*OutputController) Gradetypes

func (c *OutputController) Gradetypes(ctx echo.Context) error

@Summary Get all grade types @Description Get all grade types @Tags gradetypes @Produce json @Success 200 {array} models.Gradetype @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /gradetypes [get] @Security Bearer

func (*OutputController) States

func (c *OutputController) States(ctx echo.Context) error

@Summary Get all states @Description Get all states @Tags states @Produce json @Success 200 {array} models.State @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /states [get] @Security Bearer

type Router

type Router struct {
	// contains filtered or unexported fields
}

Router is the main router for the API

func NewRouter

func NewRouter(e *echo.Echo, p db.Provider) *Router

NewRouter creates a new router

func (*Router) RegisterV1

func (r *Router) RegisterV1()

type TokenClaim

type TokenClaim struct {
	Email string   `json:"preferred_username"`
	Name  string   `json:"name"`
	Roles []string `json:"roles"`
	jwt.RegisteredClaims
}

type UserController

type UserController struct {
	*BaseController
	Dao *dao.UserDao
}

Handles the requests for the user resource

func NewUserController

func NewUserController(provider db.Provider) *UserController

Constructor for UserController

func (*UserController) User

func (c *UserController) User(ctx echo.Context) error

@Summary Get the current user @Description Get the current user (from Bearer token) @Tags users @Produce json @Success 200 {object} models.User @Failure 401 {object} error.ApiError @Failure 403 {object} error.ApiError @Failure 500 {object} error.ApiError @Router /user [get] @Security Bearer

Jump to

Keyboard shortcuts

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