quiz count
This commit is contained in:
parent
9e5f24949d
commit
b6d1d7f44e
@ -25,11 +25,13 @@ type QuizController interface {
|
|||||||
|
|
||||||
type quizController struct {
|
type quizController struct {
|
||||||
service services.QuizService
|
service services.QuizService
|
||||||
|
quizPaperService services.QuizPaperService
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewQuizController(service services.QuizService) QuizController {
|
func NewQuizController(service services.QuizService, quizPaperService services.QuizPaperService) QuizController {
|
||||||
return &quizController{
|
return &quizController{
|
||||||
service: service,
|
service: service,
|
||||||
|
quizPaperService: quizPaperService,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,6 +176,24 @@ func (controller *quizController) Create(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count, err := controller.service.QuizCount(request.QuizPaperID)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
quizpaper, err := controller.quizPaperService.Find(request.QuizPaperID)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
quizpaper.QuizCount = int(count)
|
||||||
|
_, err = controller.quizPaperService.Update(quizpaper)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, result)
|
c.JSON(http.StatusOK, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -264,7 +284,7 @@ func (controller *quizController) Delete(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = controller.service.Find(id)
|
quiz, err := controller.service.Find(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
return
|
return
|
||||||
@ -276,5 +296,23 @@ func (controller *quizController) Delete(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count, err := controller.service.QuizCount(quiz.QuizPaperID)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
quizpaper, err := controller.quizPaperService.Find(quiz.QuizPaperID)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
quizpaper.QuizCount = int(count)
|
||||||
|
_, err = controller.quizPaperService.Update(quizpaper)
|
||||||
|
if err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
c.JSON(http.StatusOK, gin.H{"message": "success"})
|
c.JSON(http.StatusOK, gin.H{"message": "success"})
|
||||||
}
|
}
|
||||||
|
@ -285,6 +285,7 @@ func (controller *quizPaperController) Copy(c *gin.Context) {
|
|||||||
Content: template.Content,
|
Content: template.Content,
|
||||||
Category: template.Category,
|
Category: template.Category,
|
||||||
Tag: template.Tag,
|
Tag: template.Tag,
|
||||||
|
QuizCount: 0,
|
||||||
Status: template.Status,
|
Status: template.Status,
|
||||||
CreatedAt: time.Now(),
|
CreatedAt: time.Now(),
|
||||||
UpdatedAt: time.Now(),
|
UpdatedAt: time.Now(),
|
||||||
|
@ -15,6 +15,7 @@ type QuizPaper struct {
|
|||||||
Content string `json:"content" db:"content" example:"퀴즈 시트 설명" gorm:"column:content;size:512;"`
|
Content string `json:"content" db:"content" example:"퀴즈 시트 설명" gorm:"column:content;size:512;"`
|
||||||
Category string `json:"category" db:"category" example:"파이썬기본" gorm:"column:category;size:255;"`
|
Category string `json:"category" db:"category" example:"파이썬기본" gorm:"column:category;size:255;"`
|
||||||
Tag datatypes.JSON `json:"tag" db:"tag" gorm:"column:tag;"`
|
Tag datatypes.JSON `json:"tag" db:"tag" gorm:"column:tag;"`
|
||||||
|
QuizCount int `json:"quiz_count" db:"quiz_count" example:"5" gorm:"column:quiz_count;"`
|
||||||
Status string `json:"status" example:"on" gorm:"column:status;size:10;index;"`
|
Status string `json:"status" example:"on" gorm:"column:status;size:10;index;"`
|
||||||
UpdatedAt time.Time `json:"-" gorm:"column:updated_at;type:DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index;->:false"`
|
UpdatedAt time.Time `json:"-" gorm:"column:updated_at;type:DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index;->:false"`
|
||||||
CreatedAt time.Time `json:"created_at" db:"created_at" example:"2023-11-10T13:10:00+09:00" gorm:"column:created_at;type:DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;index;"`
|
CreatedAt time.Time `json:"created_at" db:"created_at" example:"2023-11-10T13:10:00+09:00" gorm:"column:created_at;type:DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;index;"`
|
||||||
@ -42,6 +43,7 @@ type QuizPaperResponse struct {
|
|||||||
Content string `json:"content" example:"퀴즈 시트 설명"`
|
Content string `json:"content" example:"퀴즈 시트 설명"`
|
||||||
Category string `json:"category" example:"파이썬기본"`
|
Category string `json:"category" example:"파이썬기본"`
|
||||||
Tag []string `json:"tag" example:"Python,AI,Robot,파이썬"`
|
Tag []string `json:"tag" example:"Python,AI,Robot,파이썬"`
|
||||||
|
QuizCount int `json:"quiz_count" example:"5"`
|
||||||
Status string `json:"status" example:"on"`
|
Status string `json:"status" example:"on"`
|
||||||
CreatedAt time.Time `json:"created_at" example:"2023-11-10T13:10:00+09:00"`
|
CreatedAt time.Time `json:"created_at" example:"2023-11-10T13:10:00+09:00"`
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,9 @@ type UserQuizPaper struct {
|
|||||||
QuizPaperID int64 `json:"quiz_paper_id" db:"quiz_paper_id" example:"1000001" gorm:"column:quiz_paper_id;index;"`
|
QuizPaperID int64 `json:"quiz_paper_id" db:"quiz_paper_id" example:"1000001" gorm:"column:quiz_paper_id;index;"`
|
||||||
UserID int64 `json:"user_id" db:"user_id" example:"1000002" gorm:"column:user_id;index;"`
|
UserID int64 `json:"user_id" db:"user_id" example:"1000002" gorm:"column:user_id;index;"`
|
||||||
UserScore float32 `json:"user_score" db:"user_score" example:"5" gorm:"column:user_score;"`
|
UserScore float32 `json:"user_score" db:"user_score" example:"5" gorm:"column:user_score;"`
|
||||||
TotalScore float32 `json:"total_score" db:"total_score" example:"100" gorm:"column:total_score;"`
|
TotalScore float32 `json:"total_score" db:"total_score" example:"5" gorm:"column:total_score;"`
|
||||||
Status string `json:"status" example:"wating" gorm:"column:status;size:10;index;"`
|
Status string `json:"status" example:"wating" gorm:"column:status;size:10;index;"`
|
||||||
|
QuizCount int `json:"quiz_count" db:"quiz_count" example:"5" gorm:"column:quiz_count;"`
|
||||||
StartAt *time.Time `json:"start_at" gorm:"column:start_at;index;"`
|
StartAt *time.Time `json:"start_at" gorm:"column:start_at;index;"`
|
||||||
DoneAt *time.Time `json:"done_at" gorm:"column:done_at;index;"`
|
DoneAt *time.Time `json:"done_at" gorm:"column:done_at;index;"`
|
||||||
UpdatedAt time.Time `json:"-" gorm:"column:updated_at;type:DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index;->:false"`
|
UpdatedAt time.Time `json:"-" gorm:"column:updated_at;type:DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index;->:false"`
|
||||||
@ -39,6 +40,7 @@ type UserQuizPaperResponse struct {
|
|||||||
LastName string `json:"last_name" db:"last_name" example:"홍"`
|
LastName string `json:"last_name" db:"last_name" example:"홍"`
|
||||||
UserScore float32 `json:"user_score" db:"user_score" example:"5"`
|
UserScore float32 `json:"user_score" db:"user_score" example:"5"`
|
||||||
TotalScore float32 `json:"total_score" db:"total_score" example:"100"`
|
TotalScore float32 `json:"total_score" db:"total_score" example:"100"`
|
||||||
|
QuizCount int `json:"quiz_count" db:"quiz_count" example:"5"`
|
||||||
Status string `json:"status" example:"wating"`
|
Status string `json:"status" example:"wating"`
|
||||||
Category string `json:"category" example:"파이썬기본"`
|
Category string `json:"category" example:"파이썬기본"`
|
||||||
Title string `json:"title" example:"출력 Print"`
|
Title string `json:"title" example:"출력 Print"`
|
||||||
|
@ -24,6 +24,7 @@ type QuizRepository interface {
|
|||||||
Create(*models.Quiz) (*models.Quiz, error)
|
Create(*models.Quiz) (*models.Quiz, error)
|
||||||
Update(*models.Quiz) (*models.Quiz, error)
|
Update(*models.Quiz) (*models.Quiz, error)
|
||||||
Delete(int64) error
|
Delete(int64) error
|
||||||
|
QuizCount(int64) (int64, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *quizRepository) List(quiz_paper_id int64, page int, limit int) (*[]models.Quiz, error) {
|
func (r *quizRepository) List(quiz_paper_id int64, page int, limit int) (*[]models.Quiz, error) {
|
||||||
@ -79,3 +80,14 @@ func (r *quizRepository) Delete(id int64) error {
|
|||||||
err := r.DB.Delete(&quiz).Error
|
err := r.DB.Delete(&quiz).Error
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *quizRepository) QuizCount(quizpaper_id int64) (int64, error) {
|
||||||
|
var count int64
|
||||||
|
var err error
|
||||||
|
err = r.DB.Model(&models.Quiz{}).
|
||||||
|
Where("quiz_paper_id = ?", quizpaper_id).
|
||||||
|
Count(&count).
|
||||||
|
Error
|
||||||
|
|
||||||
|
return count, err
|
||||||
|
}
|
||||||
|
@ -22,20 +22,26 @@ type QuizRouter interface {
|
|||||||
type quizRouter struct {
|
type quizRouter struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
repository repositories.QuizRepository
|
repository repositories.QuizRepository
|
||||||
|
quizPaperRepository repositories.QuizPaperRepository
|
||||||
service services.QuizService
|
service services.QuizService
|
||||||
|
quizPaperService services.QuizPaperService
|
||||||
controller controllers.QuizController
|
controller controllers.QuizController
|
||||||
router *gin.Engine
|
router *gin.Engine
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewQuizRouter(db *gorm.DB, router *gin.Engine) *quizRouter {
|
func NewQuizRouter(db *gorm.DB, router *gin.Engine) *quizRouter {
|
||||||
repository := repositories.NewQuizRepository(db)
|
repository := repositories.NewQuizRepository(db)
|
||||||
|
quizPaperRepository := repositories.NewQuizPaperRepository(db)
|
||||||
service := services.NewQuizService(repository)
|
service := services.NewQuizService(repository)
|
||||||
controller := controllers.NewQuizController(service)
|
quizPaperService := services.NewQuizPaperService(quizPaperRepository)
|
||||||
|
controller := controllers.NewQuizController(service, quizPaperService)
|
||||||
|
|
||||||
return &quizRouter{
|
return &quizRouter{
|
||||||
db: db,
|
db: db,
|
||||||
repository: repository,
|
repository: repository,
|
||||||
|
quizPaperRepository: quizPaperRepository,
|
||||||
service: service,
|
service: service,
|
||||||
|
quizPaperService: quizPaperService,
|
||||||
controller: controller,
|
controller: controller,
|
||||||
router: router,
|
router: router,
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ type QuizService interface {
|
|||||||
Create(*models.Quiz) (*models.Quiz, error)
|
Create(*models.Quiz) (*models.Quiz, error)
|
||||||
Update(*models.Quiz) (*models.Quiz, error)
|
Update(*models.Quiz) (*models.Quiz, error)
|
||||||
Delete(int64) error
|
Delete(int64) error
|
||||||
|
QuizCount(int64) (int64, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewQuizService(repository repositories.QuizRepository) QuizService {
|
func NewQuizService(repository repositories.QuizRepository) QuizService {
|
||||||
@ -58,6 +59,10 @@ func (s *quizService) Delete(id int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *quizService) QuizCount(quizpaper_id int64) (int64, error) {
|
||||||
|
return s.repository.QuizCount(quizpaper_id)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *quizService) Generate(quizpaper *models.QuizPaper) ([]models.Quiz, error) {
|
func (s *quizService) Generate(quizpaper *models.QuizPaper) ([]models.Quiz, error) {
|
||||||
templates, err := s.repository.List(quizpaper.ID, 1, 1000)
|
templates, err := s.repository.List(quizpaper.ID, 1, 1000)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -83,6 +83,9 @@ func (s *userQuizPaperService) Generate(users []int64, quizPaper *models.QuizPap
|
|||||||
CenterID: quizPaper.CenterID,
|
CenterID: quizPaper.CenterID,
|
||||||
UserID: user_id,
|
UserID: user_id,
|
||||||
QuizPaperID: quizPaper.ID,
|
QuizPaperID: quizPaper.ID,
|
||||||
|
QuizCount: quizPaper.QuizCount,
|
||||||
|
UserScore: 0,
|
||||||
|
TotalScore: float32(quizPaper.QuizCount),
|
||||||
Status: "ready",
|
Status: "ready",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user