package models import ( "time" "gorm.io/datatypes" ) // 문항 json, // option1~4는 구분이름일 뿐, 실제로는 셔플되어서 반환됨. /* { "option1": {"content": "markdown 문서로 작성됨", "is_answer": false}, "option2": {"content": "markdown 문서로 작성됨", "is_answer": false}, "option3": {"content": "markdown 문서로 작성됨", "is_answer": false}, "option4": {"content": "markdown 문서로 작성됨", "is_answer": true}, "hint": "markdown문서로 작성됨", "score": 10 } */ type Quiz struct { ID int64 `json:"id" db:"id" example:"1000001" gorm:"column:id;primary_key;"` GUID string `json:"guid_id" db:"guid_id" example:"2036023a-fb56-4b6c-b3bb-c787c681ada6" gorm:"column:guid_id;size:255;index;"` CenterID int64 `json:"center_id" db:"center_id" example:"100001" gorm:"column:center_id;index;"` QuizPaperID int64 `json:"quiz_paper_id" db:"quiz_paper_id" example:"100001" gorm:"column:quiz_paper_id;index;"` No int `json:"vol_no" db:"vol_no" example:"5" gorm:"column:vol_no;index;"` QuestionType string `json:"question_type" db:"question_type" example:"choice" gorm:"column:question_type;size:10;index;"` Question string `json:"question" db:"question" example:"퀴즈 질문입니다." gorm:"column:question;size:512;"` Content datatypes.JSON `json:"content" db:"content" gorm:"column:content;"` Answer datatypes.JSON `json:"answer" db:"answer" gorm:"column:answer;"` 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:"-" gorm:"column:created_at;type:DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;index;->:false;<-:create"` } // 테이블이름 정의 func (Quiz) TableName() string { return "Quizs" } type QuizRequest struct { QuizPaperID int64 `json:"quiz_paper_id" example:"1000001"` CenterID int64 `json:"center_id" example:"1000001"` No int `json:"vol_no" example:"1"` QuestionType string `json:"question_type" example:"choice"` Question string `json:"question" example:"질문입니다."` Content QuizContent `json:"content"` Answer []string `json:"answer" example:"option1,option2"` } type QuizResponse struct { ID int64 `json:"id" example:"1000001"` QuizPaperID int64 `json:"quiz_paper_id" example:"1000001"` No int `json:"vol_no" example:"5"` QuestionType string `json:"question_type" example:"check"` Question string `json:"question" example:"퀴즈 질문입니다."` Content QuizContent `json:"content"` Answer []string `json:"answer" example:"option1,option2"` } type QuizListResponse struct { Data []QuizResponse `json:"data"` Total int64 `json:"total" example:"5"` Page int `json:"page" example:"1"` TotalPage int64 `json:"totalPage" example:"1"` PageSize int `json:"pageSize" example:"10"` } type QuizContent struct { Option1 string `json:"option1" example:"markdown 문서로 작성됨"` Option2 string `json:"option2" example:"markdown 문서로 작성됨"` Option3 string `json:"option3" example:"markdown 문서로 작성됨"` Option4 string `json:"option4" example:"markdown 문서로 작성됨"` Hint string `json:"hint" example:"markdown문서로 작성됨"` } type QuizAnswer struct { }