userquizpaper title, category 등 추가
This commit is contained in:
		@@ -136,7 +136,7 @@ func (controller *centerController) Find(c *gin.Context) {
 | 
			
		||||
// @Param quizBody body models.CenterRequest true "Center Body"
 | 
			
		||||
//
 | 
			
		||||
// @Success 200 {object} models.Center
 | 
			
		||||
// @Router /quiz [post]
 | 
			
		||||
// @Router /center [post]
 | 
			
		||||
func (controller *centerController) Create(c *gin.Context) {
 | 
			
		||||
	var request models.CenterRequest
 | 
			
		||||
	if err := c.ShouldBindJSON(&request); err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -50,7 +50,7 @@ func NewQuizController(service services.QuizService) QuizController {
 | 
			
		||||
// @Param limit query int false "페이지 사이즈"
 | 
			
		||||
//
 | 
			
		||||
// @Success 200 {object} models.QuizListResponse
 | 
			
		||||
// @Router /quiz  [get]
 | 
			
		||||
// @Router /quiz [get]
 | 
			
		||||
func (controller *quizController) List(c *gin.Context) {
 | 
			
		||||
	quiz_paper_id, err := strconv.ParseInt(c.DefaultQuery("quiz_paper_id", ""), 10, 64)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -220,7 +220,7 @@ func (controller *userQuizPaperController) Update(c *gin.Context) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println("request", request)
 | 
			
		||||
	userQuizPaper, err := controller.service.Find(id)
 | 
			
		||||
	userQuizPaper, err := controller.service.Get(id)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
 | 
			
		||||
		return
 | 
			
		||||
@@ -274,7 +274,7 @@ func (controller *userQuizPaperController) Update(c *gin.Context) {
 | 
			
		||||
// @Param id path int64 true "UserQuizPaper ID"
 | 
			
		||||
// @Param userQuizPaperPatchBody body models.UserQuizPaperPatchRequest true "UserQuizPaper Patch Body (변경할 필드만 입력)"
 | 
			
		||||
//
 | 
			
		||||
// @Success 200 {object} models.UserQuizPaperResponse
 | 
			
		||||
// @Success 200 {object} models.UserQuizPaper
 | 
			
		||||
// @Router /userquizpaper/{id} [patch]
 | 
			
		||||
func (controller *userQuizPaperController) Patch(c *gin.Context) {
 | 
			
		||||
	id, err := strconv.ParseInt(c.Param("id"), 10, 64)
 | 
			
		||||
@@ -290,7 +290,7 @@ func (controller *userQuizPaperController) Patch(c *gin.Context) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println("request", request)
 | 
			
		||||
	userQuizPaper, err := controller.service.Find(id)
 | 
			
		||||
	userQuizPaper, err := controller.service.Get(id)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
 | 
			
		||||
		return
 | 
			
		||||
@@ -318,7 +318,6 @@ func (controller *userQuizPaperController) Patch(c *gin.Context) {
 | 
			
		||||
		fmt.Println("done_at", done_at)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Println("userQuizPaper", userQuizPaper)
 | 
			
		||||
	result, err := controller.service.Update(userQuizPaper)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
 | 
			
		||||
 
 | 
			
		||||
@@ -35,11 +35,16 @@ type UserQuizPaperResponse struct {
 | 
			
		||||
	CenterID    int64      `json:"center_id" db:"center_id" example:"1000015"`
 | 
			
		||||
	QuizPaperID int64      `json:"quiz_paper_id" db:"quiz_paper_id" example:"1000001"`
 | 
			
		||||
	UserID      int64      `json:"user_id" db:"user_id" example:"1000002"`
 | 
			
		||||
	FirstName   string     `json:"first_name" db:"first_name" example:"길순"`
 | 
			
		||||
	LastName    string     `json:"last_name" db:"last_name" example:"홍"`
 | 
			
		||||
	UserScore   float32    `json:"user_score" db:"user_score" example:"5"`
 | 
			
		||||
	TotalScore  float32    `json:"total_score" db:"total_score" example:"100"`
 | 
			
		||||
	Status      string     `json:"status" example:"wating"`
 | 
			
		||||
	Category    string     `json:"category" example:"파이썬기본"`
 | 
			
		||||
	Title       string     `json:"title" example:"출력 Print"`
 | 
			
		||||
	StartAt     *time.Time `json:"start_at"`
 | 
			
		||||
	DoneAt      *time.Time `json:"done_at"`
 | 
			
		||||
	CreatedAt   *time.Time `json:"created_at"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserQuizPaperUpdateRequest struct {
 | 
			
		||||
@@ -61,9 +66,9 @@ type UserQuizPaperPatchRequest struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserQuizPaperListResponse struct {
 | 
			
		||||
	Data      []UserQuizPaper `json:"data"`
 | 
			
		||||
	Total     int64           `json:"total" example:"999"`
 | 
			
		||||
	Page      int             `json:"page" example:"1"`
 | 
			
		||||
	TotalPage int64           `json:"totalPage" example:"99"`
 | 
			
		||||
	PageSize  int             `json:"pageSize" example:"10"`
 | 
			
		||||
	Data      []UserQuizPaperResponse `json:"data"`
 | 
			
		||||
	Total     int64                   `json:"total" example:"999"`
 | 
			
		||||
	Page      int                     `json:"page" example:"1"`
 | 
			
		||||
	TotalPage int64                   `json:"totalPage" example:"99"`
 | 
			
		||||
	PageSize  int                     `json:"pageSize" example:"10"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -18,33 +18,49 @@ func NewUserQuizPaperRepository(db *gorm.DB) UserQuizPaperRepository {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserQuizPaperRepository interface {
 | 
			
		||||
	List(string, int, int) (*[]models.UserQuizPaper, error)
 | 
			
		||||
	List(string, int, int) (*[]models.UserQuizPaperResponse, error)
 | 
			
		||||
	Total(string) (int64, error)
 | 
			
		||||
 | 
			
		||||
	Find(int64) (*models.UserQuizPaper, error)
 | 
			
		||||
	Find(int64) (*models.UserQuizPaperResponse, error)
 | 
			
		||||
	Get(int64) (*models.UserQuizPaper, error)
 | 
			
		||||
	Create(*models.UserQuizPaper) (*models.UserQuizPaper, error)
 | 
			
		||||
	Insert([]models.UserQuizPaper) ([]models.UserQuizPaper, error)
 | 
			
		||||
	Update(*models.UserQuizPaper) (*models.UserQuizPaper, error)
 | 
			
		||||
	Delete(string) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) List(q string, page int, limit int) (*[]models.UserQuizPaper, error) {
 | 
			
		||||
	var userQuizPapers *[]models.UserQuizPaper
 | 
			
		||||
func (r *userQuizPaperRepository) List(q string, page int, limit int) (*[]models.UserQuizPaperResponse, error) {
 | 
			
		||||
	var rows *[]models.UserQuizPaperResponse
 | 
			
		||||
	var err error
 | 
			
		||||
	offset := limit * (page - 1)
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("created_at DESC").Where("subject LIKE ? OR program LIKE ? OR name LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").Find(&userQuizPapers).Error
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("UserQuizPapers.created_at DESC").
 | 
			
		||||
			Table("UserQuizPapers").
 | 
			
		||||
			Select("UserQuizPapers.*", "Users.first_name", "Users.last_name", "QuizPapers.title", "QuizPapers.category").
 | 
			
		||||
			Joins("LEFT JOIN Users ON Users.id = UserQuizPapers.user_id").
 | 
			
		||||
			Joins("LEFT JOIN QuizPapers ON QuizPapers.id = UserQuizPapers.quiz_paper_id").
 | 
			
		||||
			Where("QuizPapers.title LIKE ? OR QuizPapers.category LIKE ? OR CONCAT(first_name, last_name) LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").
 | 
			
		||||
			Find(&rows).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("created_at DESC").Find(&userQuizPapers).Error
 | 
			
		||||
		err = r.DB.Offset(offset).Limit(limit).Order("UserQuizPapers.created_at DESC").
 | 
			
		||||
			Table("UserQuizPapers").
 | 
			
		||||
			Select("UserQuizPapers.*", "Users.first_name", "Users.last_name", "QuizPapers.title", "QuizPapers.category").
 | 
			
		||||
			Joins("LEFT JOIN Users ON Users.id = UserQuizPapers.user_id").
 | 
			
		||||
			Joins("LEFT JOIN QuizPapers ON QuizPapers.id = UserQuizPapers.quiz_paper_id").
 | 
			
		||||
			Find(&rows).Error
 | 
			
		||||
	}
 | 
			
		||||
	return userQuizPapers, err
 | 
			
		||||
 | 
			
		||||
	return rows, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Total(q string) (int64, error) {
 | 
			
		||||
	var total int64
 | 
			
		||||
	var err error
 | 
			
		||||
	if q != "" {
 | 
			
		||||
		err = r.DB.Model(&models.UserQuizPaper{}).Where("subject LIKE ? OR program LIKE ? OR name LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").Count(&total).Error
 | 
			
		||||
		err = r.DB.Model(&models.UserQuizPaper{}).
 | 
			
		||||
			Joins("LEFT JOIN Users ON Users.id = UserQuizPapers.user_id").
 | 
			
		||||
			Joins("LEFT JOIN QuizPapers ON QuizPapers.id = UserQuizPapers.quiz_paper_id").
 | 
			
		||||
			Where("QuizPapers.title LIKE ? OR QuizPapers.category LIKE ? OR CONCAT(first_name, last_name) LIKE ?", "%"+q+"%", "%"+q+"%", "%"+q+"%").Count(&total).Error
 | 
			
		||||
	} else {
 | 
			
		||||
		err = r.DB.Model(&models.UserQuizPaper{}).Count(&total).Error
 | 
			
		||||
	}
 | 
			
		||||
@@ -52,10 +68,23 @@ func (r *userQuizPaperRepository) Total(q string) (int64, error) {
 | 
			
		||||
	return total, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Find(id int64) (*models.UserQuizPaper, error) {
 | 
			
		||||
	var userQuizPaper *models.UserQuizPaper
 | 
			
		||||
	err := r.DB.Where("id = ?", id).First(&userQuizPaper).Error
 | 
			
		||||
	return userQuizPaper, err
 | 
			
		||||
func (r *userQuizPaperRepository) Find(id int64) (*models.UserQuizPaperResponse, error) {
 | 
			
		||||
	var row *models.UserQuizPaperResponse
 | 
			
		||||
	err := r.DB.
 | 
			
		||||
		Table("UserQuizPapers").
 | 
			
		||||
		Select("UserQuizPapers.*", "Users.first_name", "Users.last_name", "QuizPapers.title", "QuizPapers.category").
 | 
			
		||||
		Joins("LEFT JOIN Users ON Users.id = UserQuizPapers.user_id").
 | 
			
		||||
		Joins("LEFT JOIN QuizPapers ON QuizPapers.id = UserQuizPapers.quiz_paper_id").
 | 
			
		||||
		Where("UserQuizPapers.id = ?", id).First(&row).Error
 | 
			
		||||
	return row, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Get(id int64) (*models.UserQuizPaper, error) {
 | 
			
		||||
	var row *models.UserQuizPaper
 | 
			
		||||
	if err := r.DB.Where("id=?", id).First(&row).Error; err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return row, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (r *userQuizPaperRepository) Create(userQuizPaper *models.UserQuizPaper) (*models.UserQuizPaper, error) {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,10 +12,11 @@ type userQuizPaperService struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserQuizPaperService interface {
 | 
			
		||||
	List(string, int, int) (*[]models.UserQuizPaper, error)
 | 
			
		||||
	List(string, int, int) (*[]models.UserQuizPaperResponse, error)
 | 
			
		||||
	Total(string) (int64, error)
 | 
			
		||||
 | 
			
		||||
	Find(int64) (*models.UserQuizPaper, error)
 | 
			
		||||
	Find(int64) (*models.UserQuizPaperResponse, error)
 | 
			
		||||
	Get(int64) (*models.UserQuizPaper, error)
 | 
			
		||||
	Create(*models.UserQuizPaper) (*models.UserQuizPaper, error)
 | 
			
		||||
	Insert([]models.UserQuizPaper) ([]models.UserQuizPaper, error)
 | 
			
		||||
	Update(*models.UserQuizPaper) (*models.UserQuizPaper, error)
 | 
			
		||||
@@ -29,7 +30,7 @@ func NewUserQuizPaperService(repository repositories.UserQuizPaperRepository) Us
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *userQuizPaperService) List(q string, page int, limit int) (*[]models.UserQuizPaper, error) {
 | 
			
		||||
func (s *userQuizPaperService) List(q string, page int, limit int) (*[]models.UserQuizPaperResponse, error) {
 | 
			
		||||
	return s.repository.List(q, page, limit)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -37,10 +38,14 @@ func (s *userQuizPaperService) Total(q string) (int64, error) {
 | 
			
		||||
	return s.repository.Total(q)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *userQuizPaperService) Find(id int64) (*models.UserQuizPaper, error) {
 | 
			
		||||
func (s *userQuizPaperService) Find(id int64) (*models.UserQuizPaperResponse, error) {
 | 
			
		||||
	return s.repository.Find(id)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *userQuizPaperService) Get(id int64) (*models.UserQuizPaper, error) {
 | 
			
		||||
	return s.repository.Get(id)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *userQuizPaperService) Create(userQuizPaper *models.UserQuizPaper) (*models.UserQuizPaper, error) {
 | 
			
		||||
	result, err := s.repository.Create(userQuizPaper)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user