Documentation
¶
Index ¶
- type Answer
- type CreateExamRequest
- type Exam
- func (e *Exam) Cover() string
- func (e *Exam) Fs() afero.Fs
- func (e *Exam) Map(excludes ...string) map[string]interface{}
- func (e *Exam) SetDeadline(d *time.Time) *Exam
- func (e *Exam) SetFreeMovement(fm bool) *Exam
- func (e *Exam) SetStartAt(sa time.Time) *Exam
- func (e *Exam) SetState(s State) *Exam
- func (e *Exam) SetTitle(t string) *Exam
- type ExamStatsResponse
- type PersistenceProvider
- type Persister
- type Result
- type SearchExamRequest
- type SearchExamResponse
- type SelectedOption
- type Service
- type ServiceProvider
- type State
- type SubmitAnswerRequest
- type UpdateExamRequest
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Answer ¶
type Answer struct { ID uint64 `xorm:"pk 'id'" json:"id"` QuestionID uint64 `xorm:"not null 'question_id'" json:"question_id"` ResultID uint64 `xorm:"not null 'result_id'" json:"result_id"` Text string `xorm:"not null varchar(250)" json:"text"` SelectedOptions []*SelectedOption `xorm:"json null" json:"selected_options"` CreatedAt time.Time `xorm:"created" json:"created_at,omitempty" field:"created_at"` UpdatedAt time.Time `xorm:"updated" json:"updated_at,omitempty" field:"updated_at"` DeletedAt time.Time `xorm:"deleted" json:"-" field:"-"` Active bool `xorm:"-" json:"active"` Question *question.Question `xorm:"-" json:"question"` }
type CreateExamRequest ¶
type CreateExamRequest struct { Title string `json:"title,omitempty"` StartAt time.Time `json:"start_at,omitempty"` Once bool `json:"once,omitempty"` Deadline *time.Time `json:"deadline,omitempty"` }
func (CreateExamRequest) Validate ¶
func (r CreateExamRequest) Validate() error
type Exam ¶
type Exam struct { ID uint64 `xorm:"pk 'id'" json:"id,omitempty" field:"id"` Examiner uint64 `xorm:"not null" json:"examiner,omitempty" field:"examiner"` Title string `xorm:"varchar(50) not null" json:"title,omitempty" field:"title"` State State `xorm:"not null" json:"state,omitempty" field:"state"` Duration time.Duration `xorm:"not null" json:"duration,omitempty" field:"duration"` StartAt time.Time `xorm:"not null" json:"start_at,omitempty" field:"start_at"` Deadline *time.Time `xorm:"null" json:"deadline,omitempty" field:"deadline"` FreeMovement bool `xorm:"not null" json:"free_movement,omitempty" field:"free_movement"` CreatedAt time.Time `xorm:"created" json:"created_at,omitempty" field:"created_at"` UpdatedAt time.Time `xorm:"updated" json:"updated_at,omitempty" field:"updated_at"` DeletedAt time.Time `xorm:"deleted" json:"-" field:"-"` Questions []*question.Question `xorm:"-" json:"questions,omitempty"` // contains filtered or unexported fields }
func NewDraftExam ¶
func (*Exam) SetFreeMovement ¶
type ExamStatsResponse ¶
type PersistenceProvider ¶
type PersistenceProvider interface {
ExamPersister() Persister
}
type Persister ¶
type Persister interface { FindExam(context.Context, uint64) (*Exam, error) CreateExam(context.Context, *Exam) error UpdateExam(context.Context, *Exam, ...string) error SearchExam(_ context.Context, q string, page, pageSize int) (int64, []*Exam, error) ExamStats(context.Context, uint64) (*ExamStatsResponse, error) CreateResult(context.Context, *Result) error FindResult(_ context.Context, id uint64) (*Result, error) FindResultByExam(_ context.Context, uid, eid uint64) (*Result, error) FindResultAnswers(_ context.Context, rid uint64) ([]*Answer, error) UpdateAnswer(context.Context, *Answer, ...string) error }
type Result ¶
type Result struct { ID uint64 `xorm:"pk 'id'" json:"id"` Examinee uint64 `xorm:"not null" json:"examinee"` ExamID uint64 `xorm:"not null 'exam_id'" json:"exam_id"` CreatedAt time.Time `xorm:"created" json:"created_at,omitempty" field:"created_at"` UpdatedAt time.Time `xorm:"updated" json:"updated_at,omitempty" field:"updated_at"` DeletedAt time.Time `xorm:"deleted" json:"-" field:"-"` Answers []*Answer `xorm:"-" json:"answers"` }
type SearchExamRequest ¶
type SearchExamRequest struct {
shared.PaginatedRequest
}
type SearchExamResponse ¶
type SearchExamResponse struct { shared.PaginatedResponse Exams []*Exam }
type SelectedOption ¶
type Service ¶
type Service interface { GetExam(context.Context, uint64) (*Exam, error) GetExamStats(context.Context, uint64) (*ExamStatsResponse, error) CreateExam(context.Context, *CreateExamRequest) (*Exam, error) UpdateExam(context.Context, *UpdateExamRequest) error PublishExam(context.Context, *Exam) error SearchExam(context.Context, *SearchExamRequest) (*SearchExamResponse, error) Participate(context.Context, *user.User, *Exam) (*Result, error) GetResult(context.Context, uint64) (*Result, error) SubmitAnswer(context.Context, *SubmitAnswerRequest) error }
type ServiceProvider ¶
type ServiceProvider interface {
ExamService() Service
}
type SubmitAnswerRequest ¶
type SubmitAnswerRequest struct { ID uint64 `json:"-"` Text string `json:"text,omitempty"` SelectedOptions []*SelectedOption `json:"selected_options,omitempty"` }
type UpdateExamRequest ¶
type UpdateExamRequest struct { Title string `json:"title,omitempty"` StartAt time.Time `json:"start_at,omitempty"` Once bool `json:"once,omitempty"` Deadline *time.Time `json:"deadline,omitempty"` FreeMovement bool `json:"free_movement,omitempty"` }
func (UpdateExamRequest) Validate ¶
func (r UpdateExamRequest) Validate() error
Click to show internal directories.
Click to hide internal directories.