Example #1
0
func (s *postsStore) List(opt *thesrc.PostListOptions) ([]*thesrc.Post, error) {
	if opt == nil {
		opt = &thesrc.PostListOptions{}
	}

	sql := `SELECT * FROM post`

	var conds []string
	if opt.CodeOnly {
		conds = append(conds, "classification LIKE 'CODE%'")
	}
	if len(conds) > 0 {
		sql += " WHERE (" + strings.Join(conds, ") AND (") + ")"
	}

	sql += " ORDER BY submittedat DESC LIMIT $1 OFFSET $2;"

	var posts []*thesrc.Post
	err := s.dbh.Select(&posts, sql, opt.PerPageOrDefault(), opt.Offset())
	if err != nil {
		return nil, err
	}
	return posts, nil
}