big update: added reactions, groups, media share
This commit is contained in:
@@ -8,14 +8,15 @@ import (
|
||||
)
|
||||
|
||||
// InsertMessage creates a new message in a conversation and returns it.
|
||||
func (s *Store) InsertMessage(ctx context.Context, conversationID, senderID int64, body string) (*Message, error) {
|
||||
// mediaID, when non-nil, attaches a previously uploaded media object.
|
||||
func (s *Store) InsertMessage(ctx context.Context, conversationID, senderID int64, body string, mediaID *int64) (*Message, error) {
|
||||
var m Message
|
||||
err := s.pool.QueryRow(ctx, `
|
||||
INSERT INTO messages(conversation_id, sender_id, body)
|
||||
VALUES($1, $2, $3)
|
||||
RETURNING id, conversation_id, sender_id, body, created_at, edited_at, deleted_at
|
||||
`, conversationID, senderID, body).Scan(
|
||||
&m.ID, &m.ConversationID, &m.SenderID, &m.Body,
|
||||
INSERT INTO messages(conversation_id, sender_id, body, media_id)
|
||||
VALUES($1, $2, $3, $4)
|
||||
RETURNING id, conversation_id, sender_id, body, media_id, created_at, edited_at, deleted_at
|
||||
`, conversationID, senderID, body, mediaID).Scan(
|
||||
&m.ID, &m.ConversationID, &m.SenderID, &m.Body, &m.MediaID,
|
||||
&m.CreatedAt, &m.EditedAt, &m.DeletedAt,
|
||||
)
|
||||
if err != nil {
|
||||
@@ -28,10 +29,10 @@ func (s *Store) InsertMessage(ctx context.Context, conversationID, senderID int6
|
||||
func (s *Store) GetMessageByID(ctx context.Context, id int64) (*Message, error) {
|
||||
var m Message
|
||||
err := s.pool.QueryRow(ctx, `
|
||||
SELECT id, conversation_id, sender_id, body, created_at, edited_at, deleted_at
|
||||
SELECT id, conversation_id, sender_id, body, media_id, created_at, edited_at, deleted_at
|
||||
FROM messages WHERE id=$1
|
||||
`, id).Scan(
|
||||
&m.ID, &m.ConversationID, &m.SenderID, &m.Body,
|
||||
&m.ID, &m.ConversationID, &m.SenderID, &m.Body, &m.MediaID,
|
||||
&m.CreatedAt, &m.EditedAt, &m.DeletedAt,
|
||||
)
|
||||
if err != nil {
|
||||
@@ -50,14 +51,14 @@ func (s *Store) ListMessages(ctx context.Context, conversationID int64, before i
|
||||
var err error
|
||||
if before > 0 {
|
||||
rows, err = s.pool.Query(ctx, `
|
||||
SELECT id, conversation_id, sender_id, body, created_at, edited_at, deleted_at
|
||||
SELECT id, conversation_id, sender_id, body, media_id, created_at, edited_at, deleted_at
|
||||
FROM messages
|
||||
WHERE conversation_id=$1 AND id<$2
|
||||
ORDER BY id DESC LIMIT $3
|
||||
`, conversationID, before, limit)
|
||||
} else {
|
||||
rows, err = s.pool.Query(ctx, `
|
||||
SELECT id, conversation_id, sender_id, body, created_at, edited_at, deleted_at
|
||||
SELECT id, conversation_id, sender_id, body, media_id, created_at, edited_at, deleted_at
|
||||
FROM messages
|
||||
WHERE conversation_id=$1
|
||||
ORDER BY id DESC LIMIT $2
|
||||
@@ -72,7 +73,7 @@ func (s *Store) ListMessages(ctx context.Context, conversationID int64, before i
|
||||
for rows.Next() {
|
||||
var m Message
|
||||
if err := rows.Scan(
|
||||
&m.ID, &m.ConversationID, &m.SenderID, &m.Body,
|
||||
&m.ID, &m.ConversationID, &m.SenderID, &m.Body, &m.MediaID,
|
||||
&m.CreatedAt, &m.EditedAt, &m.DeletedAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
|
||||
Reference in New Issue
Block a user