|
- package models
-
- import "net/http"
-
- type askMan struct{}
-
- // Questions is a singleton manager class for Question model access.
- var Questions = askMan{}
-
- // Question model.
- type Question struct {
- BaseModel
-
- Name string
- Question string
- Answered bool
- PostID int // FKey Post.id
-
- // Relationships.
- Post Post
- }
-
- // New creates a new Question model.
- func (m askMan) New() Question {
- return Question{}
- }
-
- // Load a comment by ID.
- func (m askMan) Load(id int) (Question, error) {
- var q Question
- r := DB.Preload("Post").First(&q, id)
- return q, r.Error
- }
-
- // Pending returns questions in need of answering.
- func (m askMan) Pending() ([]Question, error) {
- var q []Question
- r := DB.Preload("Post").Where("answered=false").Find(&q)
- return q, r.Error
- }
-
- // RecentlyAnswered returns questions that have blog posts attached.
- func (m askMan) RecentlyAnswered(depth int) ([]Question, error) {
- var qq []Question
- r := DB.Preload("Post").
- Where("answered=true AND post_id IS NOT NULL").
- Order("created_at desc").
- Limit(depth).
- Find(&qq)
- return qq, r.Error
- }
-
- // Save the question.
- func (q Question) Save() error {
- if DB.NewRecord(q) {
- return DB.Create(&q).Error
- }
- return DB.Save(&q).Error
- }
-
- // Delete the question.
- func (q Question) Delete() error {
- return DB.Delete(&q).Error
- }
-
- // ParseForm sets the question's attributes from HTTP form.
- func (q *Question) ParseForm(r *http.Request) {
- q.Name = r.FormValue("name")
- q.Question = r.FormValue("question")
- }
|