Учитывая, что вы храните в таблице RoomActivity
только пользовательские данные, а не реальные сообщения чата, я бы сказал:
RoomActivity
------
roomActivityId (hash key, uuid)
roomId (gsi, uuid)
userId (gsi, uuid)
joinedDate (timestamp)
status (enum - JOINED, LEFT,...)
, где User
и Room
- это отдельные таблицы, содержащие конкретные данныео них.
Лично у меня была бы новая запись для каждого изменения статуса и учитывая в моем коде только самую последнюю запись (по метке времени), но вы также можете обновить статус напрямую.
Если вы хотите получить всех пользователей из комнаты, используйте индекс roomId
.
Если вы хотите получить все комнаты пользователя, используйте индекс userId
.