completed the Scan() error handling
This commit is contained in:
+23
-6
@@ -16,6 +16,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// PostHeader represents the "header" of a post, everything except for its text and attachment.
|
||||
type PostHeader struct {
|
||||
PostId int64 `db:"postid"` // ID of the post
|
||||
Parent int64 `db:"parent"` // ID of parent (unused?)
|
||||
@@ -35,6 +36,7 @@ type PostData struct {
|
||||
Data *string `db:"data"` // actual post data
|
||||
}
|
||||
|
||||
// ErrNoPostData is returned if post data is missing.
|
||||
var ErrNoPostData = errors.New("no post data")
|
||||
|
||||
// IsScribbled returns true if the post has been scribbled, false if not.
|
||||
@@ -61,8 +63,7 @@ func (p *PostHeader) SetAttachment(ctx context.Context, fileName string, mimeTyp
|
||||
// Text returns the text associated with a post.
|
||||
func (p *PostHeader) Text(ctx context.Context) (string, error) {
|
||||
var dbdata []PostData
|
||||
err := amdb.SelectContext(ctx, &dbdata, "SELECT * FROM postdata WHERE postid = ?", p.PostId)
|
||||
if err != nil {
|
||||
if err := amdb.SelectContext(ctx, &dbdata, "SELECT * FROM postdata WHERE postid = ?", p.PostId); err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(dbdata) > 1 {
|
||||
@@ -74,10 +75,17 @@ func (p *PostHeader) Text(ctx context.Context) (string, error) {
|
||||
return *dbdata[0].Data, nil
|
||||
}
|
||||
|
||||
/* AmGetPost gets a single post from the database by ID.
|
||||
* Parameters:
|
||||
* ctx - Standard Go context value.
|
||||
* postId - ID of the post to retrieve.
|
||||
* Returns:
|
||||
* Pointer to PostHeader for the post, or nil.
|
||||
* Standard Go error status.
|
||||
*/
|
||||
func AmGetPost(ctx context.Context, postId int64) (*PostHeader, error) {
|
||||
var dbdata []PostHeader
|
||||
err := amdb.SelectContext(ctx, &dbdata, "SELECT * FROM posts WHERE postid = ?", postId)
|
||||
if err != nil {
|
||||
if err := amdb.SelectContext(ctx, &dbdata, "SELECT * FROM posts WHERE postid = ?", postId); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(dbdata) == 0 {
|
||||
@@ -89,10 +97,19 @@ func AmGetPost(ctx context.Context, postId int64) (*PostHeader, error) {
|
||||
return &(dbdata[0]), nil
|
||||
}
|
||||
|
||||
/* AmGetPostRage gets a range of posts from a topic by post numbers.
|
||||
* Parameters:
|
||||
* ctx - Standard Go context value.
|
||||
* topic - Topic pointer to retrieve posts from.
|
||||
* first - Number of first post to retrieve.
|
||||
* last - Number of last post to retrieve.
|
||||
* Returns:
|
||||
* Array of pointers to PostHeader objects, or nil.
|
||||
* Standard Go error status.
|
||||
*/
|
||||
func AmGetPostRange(ctx context.Context, topic *Topic, first, last int32) ([]*PostHeader, error) {
|
||||
var posts []PostHeader
|
||||
err := amdb.SelectContext(ctx, &posts, "SELECT * FROM posts WHERE topicid = ? AND num >= ? AND num <= ? ORDER BY num", topic.TopicId, first, last)
|
||||
if err != nil {
|
||||
if err := amdb.SelectContext(ctx, &posts, "SELECT * FROM posts WHERE topicid = ? AND num >= ? AND num <= ? ORDER BY num", topic.TopicId, first, last); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
rc := make([]*PostHeader, len(posts))
|
||||
|
||||
Reference in New Issue
Block a user