퀴즈 풀기/점수

This commit is contained in:
2024-02-19 22:43:31 +09:00
parent 41e1ed5c58
commit 05292be591
24 changed files with 2425 additions and 39 deletions

89
internal/routers/paper.go Normal file
View File

@ -0,0 +1,89 @@
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 InitPaperRouter(db *gorm.DB, router *gin.Engine) {
r := NewPaperRouter(db, router)
r.SetPaperRouter()
}
type PaperRouter interface {
SetRouter(db *gorm.DB, router *gin.Engine)
}
type paperRouter struct {
db *gorm.DB
repository repositories.PaperRepository
paperQuizRepository repositories.PaperQuizRepository
quizRepository repositories.QuizRepository
quizPaperRepository repositories.QuizPaperRepository
userRepository repositories.UserRepository
userQuizRepository repositories.UserQuizRepository
service services.PaperService
paperQuizService services.PaperQuizService
quizService services.QuizService
quizPaperService services.QuizPaperService
userService services.UserService
userQuizService services.UserQuizService
controller controllers.PaperController
router *gin.Engine
}
func NewPaperRouter(db *gorm.DB, router *gin.Engine) *paperRouter {
repository := repositories.NewPaperRepository(db)
paperQuizRepository := repositories.NewPaperQuizRepository(db)
quizRepository := repositories.NewQuizRepository(db)
quizPaperRepository := repositories.NewQuizPaperRepository(db)
tokenRepository := repositories.NewTokenRepository(db)
userRepository := repositories.NewUserRepository(db)
userQuizRepository := repositories.NewUserQuizRepository(db)
service := services.NewPaperService(repository, paperQuizRepository)
paperQuizService := services.NewPaperQuizService(paperQuizRepository)
quizService := services.NewQuizService(quizRepository)
quizPaperService := services.NewQuizPaperService(quizPaperRepository)
userService := services.NewUserService(userRepository, tokenRepository)
userQuizService := services.NewUserQuizService(userQuizRepository, quizRepository)
controller := controllers.NewPaperController(service, paperQuizService, quizService, quizPaperService, userService, userQuizService)
return &paperRouter{
db: db,
repository: repository,
quizRepository: quizRepository,
quizPaperRepository: quizPaperRepository,
userRepository: userRepository,
userQuizRepository: userQuizRepository,
service: service,
paperQuizService: paperQuizService,
quizService: quizService,
quizPaperService: quizPaperService,
userService: userService,
userQuizService: userQuizService,
controller: controller,
router: router,
}
}
func (r *paperRouter) SetPaperRouter() {
group := r.router.Group("/paper")
group.GET("", middleware.Auth("member"), r.controller.List)
group.GET("/:paper_id", middleware.Auth("member"), r.controller.Find)
group.PATCH("/:paper_id/start", middleware.Auth("member"), r.controller.Start)
group.PATCH("/:paper_id/finish", middleware.Auth("member"), r.controller.Finish)
group.GET("/:paper_id/quiz", middleware.Auth("member"), r.controller.QuizList)
group.GET("/:paper_id/quiz/:quiz_id", middleware.Auth("member"), r.controller.QuizFind)
group.PATCH("/:paper_id/quiz/:quiz_id/answer", middleware.Auth("member"), r.controller.QuizAnswer)
}

View File

@ -25,6 +25,7 @@ func Init() {
InitAuthRouter(maindb, Router)
InitCenterRouter(maindb, Router)
InitPaperRouter(maindb, Router)
InitQuizPaperRouter(maindb, Router)
InitQuizRouter(maindb, Router)
InitTokenRouter(maindb, Router)

View File

@ -20,27 +20,42 @@ type UserQuizRouter interface {
}
type userQuizRouter struct {
db *gorm.DB
repository repositories.UserQuizRepository
quizRepository repositories.QuizRepository
service services.UserQuizService
controller controllers.UserQuizController
router *gin.Engine
db *gorm.DB
repository repositories.UserQuizRepository
quizRepository repositories.QuizRepository
userquizRepository repositories.UserQuizRepository
userquizpaperRepository repositories.UserQuizPaperRepository
service services.UserQuizService
quizService services.QuizService
userquizService services.UserQuizService
userquizpaperService services.UserQuizPaperService
controller controllers.UserQuizController
router *gin.Engine
}
func NewUserQuizRouter(db *gorm.DB, router *gin.Engine) *userQuizRouter {
repository := repositories.NewUserQuizRepository(db)
quizRepostory := repositories.NewQuizRepository(db)
userquizRepository := repositories.NewUserQuizRepository(db)
userquizpaperRepository := repositories.NewUserQuizPaperRepository(db)
service := services.NewUserQuizService(repository, quizRepostory)
controller := controllers.NewUserQuizController(service)
quizService := services.NewQuizService(quizRepostory)
userquizService := services.NewUserQuizService(userquizRepository, quizRepostory)
userquizpaperService := services.NewUserQuizPaperService(userquizpaperRepository, userquizRepository)
controller := controllers.NewUserQuizController(service, quizService, userquizpaperService)
return &userQuizRouter{
db: db,
repository: repository,
quizRepository: quizRepostory,
service: service,
controller: controller,
router: router,
db: db,
repository: repository,
quizRepository: quizRepostory,
userquizpaperRepository: userquizpaperRepository,
userquizRepository: userquizRepository,
service: service,
quizService: quizService,
userquizpaperService: userquizpaperService,
userquizService: userquizService,
controller: controller,
router: router,
}
}
@ -50,4 +65,5 @@ func (r *userQuizRouter) SetUserQuizRouter() {
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)
group.PATCH("/:id", middleware.Auth("member"), r.controller.Answer)
}

View File

@ -42,7 +42,7 @@ func NewUserQuizPaperRouter(db *gorm.DB, router *gin.Engine) *userQuizPaperRoute
userRepository := repositories.NewUserRepository(db)
userQuizRepository := repositories.NewUserQuizRepository(db)
service := services.NewUserQuizPaperService(repository)
service := services.NewUserQuizPaperService(repository, userQuizRepository)
quizService := services.NewQuizService(quizRepository)
quizPaperService := services.NewQuizPaperService(quizPaperRepository)
userService := services.NewUserService(userRepository, tokenRepository)