cslms-api/internal/routers/quiz.go

58 lines
1.8 KiB
Go
Raw Permalink Normal View History

2023-12-27 17:31:49 +09:00
package routers
import (
"learnsteam/cslms-api/internal/controllers"
"learnsteam/cslms-api/internal/middleware"
"learnsteam/cslms-api/internal/repositories"
"learnsteam/cslms-api/internal/services"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
func InitQuizRouter(db *gorm.DB, router *gin.Engine) {
r := NewQuizRouter(db, router)
r.SetQuizRouter()
}
type QuizRouter interface {
SetRouter(db *gorm.DB, router *gin.Engine)
}
type quizRouter struct {
2024-02-22 21:11:18 +09:00
db *gorm.DB
repository repositories.QuizRepository
quizPaperRepository repositories.QuizPaperRepository
service services.QuizService
quizPaperService services.QuizPaperService
controller controllers.QuizController
router *gin.Engine
2023-12-27 17:31:49 +09:00
}
func NewQuizRouter(db *gorm.DB, router *gin.Engine) *quizRouter {
repository := repositories.NewQuizRepository(db)
2024-02-22 21:11:18 +09:00
quizPaperRepository := repositories.NewQuizPaperRepository(db)
2023-12-27 17:31:49 +09:00
service := services.NewQuizService(repository)
2024-02-22 21:11:18 +09:00
quizPaperService := services.NewQuizPaperService(quizPaperRepository)
controller := controllers.NewQuizController(service, quizPaperService)
2023-12-27 17:31:49 +09:00
return &quizRouter{
2024-02-22 21:11:18 +09:00
db: db,
repository: repository,
quizPaperRepository: quizPaperRepository,
service: service,
quizPaperService: quizPaperService,
controller: controller,
router: router,
2023-12-27 17:31:49 +09:00
}
}
func (r *quizRouter) SetQuizRouter() {
group := r.router.Group("/quiz")
group.GET("", middleware.Auth("admin"), r.controller.List)
group.GET("/:id", middleware.Auth("admin"), r.controller.Find)
group.POST("", middleware.Auth("admin"), r.controller.Create)
group.PUT("/:id", middleware.Auth("admin"), r.controller.Update)
2024-01-15 23:08:05 +09:00
group.DELETE("/:id", middleware.Auth("admin"), r.controller.Delete)
2023-12-27 17:31:49 +09:00
}