diff --git a/server/internal/store/conversations.go b/server/internal/store/conversations.go index efa2d53..e2a58b5 100644 --- a/server/internal/store/conversations.go +++ b/server/internal/store/conversations.go @@ -4,6 +4,7 @@ import ( "context" "errors" "sort" + "time" "github.com/jackc/pgx/v5" ) @@ -145,16 +146,32 @@ func (s *Store) ListConversationsForUser(ctx context.Context, userID int64) ([]C var list []ConversationSummary for rows.Next() { var cs ConversationSummary - var msg Message + var ( + msgID *int64 + msgConvID *int64 + msgSender *int64 + msgBody *string + msgCreated *time.Time + msgEdited *time.Time + msgDeleted *time.Time + ) if err := rows.Scan( &cs.ID, &cs.Type, &cs.CreatedAt, - &msg.ID, &msg.ConversationID, &msg.SenderID, &msg.Body, &msg.CreatedAt, &msg.EditedAt, &msg.DeletedAt, + &msgID, &msgConvID, &msgSender, &msgBody, &msgCreated, &msgEdited, &msgDeleted, &cs.UnreadCount, ); err != nil { return nil, err } - if msg.ID != 0 { - cs.LastMessage = &msg + if msgID != nil { + cs.LastMessage = &Message{ + ID: *msgID, + ConversationID: *msgConvID, + SenderID: *msgSender, + Body: *msgBody, + CreatedAt: *msgCreated, + EditedAt: msgEdited, + DeletedAt: msgDeleted, + } } list = append(list, cs) } diff --git a/server/internal/store/integration_test.go b/server/internal/store/integration_test.go index 18c470d..83da570 100644 --- a/server/internal/store/integration_test.go +++ b/server/internal/store/integration_test.go @@ -26,6 +26,9 @@ func TestIntegration(t *testing.T) { if err := db.Migrate(ctx); err != nil { t.Fatalf("Migrate failed: %v", err) } + if _, err := pool.Exec(ctx, "TRUNCATE users, conversations, messages, contacts, sessions RESTART IDENTITY CASCADE"); err != nil { + t.Fatalf("truncate failed: %v", err) + } // Users u1, err := db.CreateUser(ctx, "user1", "User One", "hash1")