This repository has been archived on 2024-11-03. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
mattermost-plugin-attachmen.../server/sqlstore/post.go
Felipe Martin 2d962d18d2
Some checks failed
ci / plugin-ci (push) Has been cancelled
added command with interactive dialog
2024-08-08 18:06:32 +02:00

51 lines
1 KiB
Go

package sqlstore
import (
"context"
"encoding/json"
"fmt"
"time"
sq "github.com/Masterminds/squirrel"
)
const (
postsTable = "Posts"
)
func (s *SQLStore) AttachFileIDsToPost(postID string, fileIDs []string) error {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
fileIDsJSON, err := json.Marshal(fileIDs)
if err != nil {
return fmt.Errorf("error marshaling fileIds: %w", err)
}
query := s.masterBuilder.
Update(postsTable).
Set("FileIds", fileIDsJSON).
Where(sq.Eq{"Id": postID})
tx, err := s.master.Begin()
if err != nil {
return fmt.Errorf("error starting transaction: %w", err)
}
q, args, err := query.ToSql()
if err != nil {
return fmt.Errorf("error creating query: %w", err)
}
_, err = tx.ExecContext(ctx, q, args...)
if err != nil {
s.logger.Error("error attaching file to post", "postId", postID, "err", err)
return tx.Rollback()
}
if err := tx.Commit(); err != nil {
return fmt.Errorf("error committing transaction: %w", err)
}
return nil
}