package schema import ( "time" "github.guxuan/haibei/pkg/util" ) // Defining the `Questionnaire` struct. type Questionnaire struct { util.BaseModel Title string `json:"title" gorm:"size:128;not null;index;comment:标题"` Cover string `json:"cover" gorm:"size:2048;not null;comment:封面"` StartAt *time.Time `json:"startAt" gorm:"not null;comment:开始时间"` EndAt *time.Time `json:"endAt" gorm:"not null;comment:结束时间"` Content *[]QuestionnaireTable `json:"content" gorm:"serializer:json;comment:问卷表单详情"` Point int `json:"point" gorm:"not null;default:0;comment:问卷获得积分积分"` AreaID uint `json:"areaId" gorm:"index;comment:城市id"` Status string `json:"status" gorm:"size:20;index;comment:状态"` } type QuestionnaireTable struct { Label string `json:"label"` Typer string `json:"type"` Required bool `json:"required"` Options []string `json:"options"` } // Defining the query parameters for the `Questionnaire` struct. type QuestionnaireQueryParam struct { util.PaginationParam LikeTitle string `form:"title" ` Status string `form:"status"` AreaID uint `form:"areaId"` } // Defining the query options for the `Questionnaire` struct. type QuestionnaireQueryOptions struct { util.QueryOptions } // Defining the query result for the `Questionnaire` struct. type QuestionnaireQueryResult struct { Data Questionnaires PageResult *util.PaginationResult } // Defining the slice of `Questionnaire` struct. type Questionnaires []*Questionnaire // Defining the data structure for creating a `Questionnaire` struct. type QuestionnaireForm struct { Title string `json:"title" ` Cover string `json:"cover"` StartAt *time.Time `json:"startAt"` EndAt *time.Time `json:"endAt"` AreaID uint `json:"areaId"` Content *[]QuestionnaireTable `json:"content"` Point int `json:"point" ` Status string `json:"status"` } // A validation function for the `QuestionnaireForm` struct. func (a *QuestionnaireForm) Validate() error { return nil } // Convert `QuestionnaireForm` to `Questionnaire` object. func (a *QuestionnaireForm) FillTo(questionnaire *Questionnaire) error { questionnaire.Title = a.Title questionnaire.Cover = a.Cover questionnaire.StartAt = a.StartAt questionnaire.EndAt = a.EndAt questionnaire.AreaID = a.AreaID questionnaire.Content = a.Content questionnaire.Point = a.Point questionnaire.Status = a.Status return nil }