Sobes.tech
Назад к задачам
Junior — Middle+
31

Группировка полученных сообщений по датам с указанием названия комнаты

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В системе доступны два эндпоинта: один возвращает массив комнат, второй — массив сообщений. Необходимо выполнить запросы к обоим ресурсам, добавить каждому сообщению название соответствующей комнаты и собрать сообщения в структуру, где ключом будет строковое представление даты начала дня в ISO‑формате, а значением — объект сообщения без поля roomId, но с полем roomName. Ниже приведены типы данных и пример ожидаемого результата.

 interface IRoom {
  id: number;
  name: string;
  type: string;
}

interface IMessage {
  roomId: IRoom['id'];
  id: number;
  text: string;
  ts: Date;
}

// // Эндпоинт GET '/rooms' возвращает IRoom[]
// // Эндпоинт GET '/messages' возвращает IMessage[]
// // Необходимо запросить сообщения и комнаты и сгруппировать сообщения по дням

type ProcessedMessage = Omit<IMessage, 'roomId'> & {
  roomName: IRoom['name'];
};

type ProcessedData = Record<string, ProcessedMessage>;

// // при этом строковый ключ – ISO представление даты начала дня ('2022-06-23T00:00:00')

// // Пример результата:
//
// '2023-03-23T00:00:00': { // ISO представление даты начала дня
//   "roomName": "Room name", // название комнаты из rooms
//   "id": 1,
//   "text": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
//   "ts": Thu Mar 23 2023 12:15:15 GMT+0200 (Восточная Европа, стандартное время)
// }
// ...