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") }