commento/api/page_get.go
2019-02-18 17:34:43 -05:00

38 lines
918 B
Go

package main
import (
"database/sql"
)
func pageGet(domain string, path string) (page, error) {
// path can be empty
if domain == "" {
return page{}, errorMissingField
}
statement := `
SELECT isLocked, commentCount, stickyCommentHex, title
FROM pages
WHERE domain=$1 AND path=$2;
`
row := db.QueryRow(statement, domain, path)
p := page{Domain: domain, Path: path}
if err := row.Scan(&p.IsLocked, &p.CommentCount, &p.StickyCommentHex, &p.Title); err != nil {
if err == sql.ErrNoRows {
// If there haven't been any comments, there won't be a record for this
// page. The sane thing to do is return defaults.
// TODO: the defaults are hard-coded in two places: here and the schema
p.IsLocked = false
p.CommentCount = 0
p.StickyCommentHex = "none"
p.Title = ""
} else {
logger.Errorf("error scanning page: %v", err)
return page{}, errorInternal
}
}
return p, nil
}