big update: added reactions, groups, media share
CI / Go (build + vet + test) (push) Canceled after 0s
CI / Web (build + lint) (push) Canceled after 0s

This commit is contained in:
vantablackTea
2026-09-27 21:59:48 +03:00
parent ae24bdd0e0
commit 9d03ea4c51
41 changed files with 2548 additions and 172 deletions
+12 -11
View File
@@ -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