working on back end of Import Messages (unfinished)

This commit is contained in:
2026-02-27 23:18:01 -07:00
parent f287b43fa3
commit acbcad7e63
3 changed files with 206 additions and 13 deletions
+10
View File
@@ -500,6 +500,16 @@ func (p *PostHeader) MoveTo(ctx context.Context, target *Topic, u *User, comm *C
return nil
}
// ImportFix fixes a couple of fields on the post that can't be set otherwise during an import.
func (p *PostHeader) ImportFix(ctx context.Context, parent int64, dateStamp time.Time) error {
_, err := amdb.ExecContext(ctx, "UPDATE posts SET parent = ?, posted = ? WHERE postid = ?", parent, dateStamp, p.PostId)
if err == nil {
p.Parent = parent
p.Posted = dateStamp
}
return err
}
/* AmGetPost gets a single post from the database by ID.
* Parameters:
* ctx - Standard Go context value.
+36
View File
@@ -22,6 +22,9 @@ import (
log "github.com/sirupsen/logrus"
)
// ErrNoTopic is an error returned if no topic is found.
var ErrNoTopic error = errors.New("no such topic found")
// Topic is the top-level structure detailing topics.
type Topic struct {
TopicId int32 `db:"topicid"` // unique ID of the topic
@@ -487,6 +490,9 @@ type TopicSummary struct {
func AmGetTopic(ctx context.Context, topicId int32) (*Topic, error) {
var top Topic
if err := amdb.GetContext(ctx, &top, "SELECT * FROM topics WHERE topicid = ?", topicId); err != nil {
if err == sql.ErrNoRows {
err = ErrNoTopic
}
return nil, err
}
return &top, nil
@@ -504,6 +510,9 @@ func AmGetTopic(ctx context.Context, topicId int32) (*Topic, error) {
func AmGetTopicTx(ctx context.Context, tx *sqlx.Tx, topicId int32) (*Topic, error) {
var top Topic
if err := tx.GetContext(ctx, &top, "SELECT * FROM topics WHERE topicid = ?", topicId); err != nil {
if err == sql.ErrNoRows {
err = ErrNoTopic
}
return nil, err
}
return &top, nil
@@ -524,6 +533,30 @@ func AmGetTopicByNumber(ctx context.Context, conf *Conference, topicNum int16) (
if err == nil {
return &top, nil
}
if err == sql.ErrNoRows {
err = ErrNoTopic
}
return nil, err
}
/* AmGetTopicByName retrieves a topic by conference and name.
* Parameters:
* ctx - Standard Go context value.
* conf - The conference to look in.
* name - The topic name within that conference.
* Returns:
* Pointer to the Topic, or nil.
* Standard Go error status.
*/
func AmGetTopicByName(ctx context.Context, conf *Conference, name string) (*Topic, error) {
var top Topic
err := amdb.GetContext(ctx, &top, "SELECT * FROM topics WHERE confid = ? AND name = ?", conf.ConfId, name)
if err == nil {
return &top, nil
}
if err == sql.ErrNoRows {
err = ErrNoTopic
}
return nil, err
}
@@ -658,6 +691,9 @@ func AmListTopics(ctx context.Context, confid int32, uid int32, viewOption int,
// Execute and capture results
rs, err := amdb.QueryContext(ctx, fullStatement.String(), uid, confid)
if err != nil {
if err == sql.ErrNoRows {
err = ErrNoTopic
}
return nil, err
}
rc := make([]*TopicSummary, 0)