Back to tasksGet help with live coding in real time with Sobes Copilot
Junior — Middle+
30
Группировка полученных сообщений по датам с указанием названия комнаты
Task condition
В системе доступны два эндпоинта: один возвращает массив комнат, второй — массив сообщений. Необходимо выполнить запросы к обоим ресурсам, добавить каждому сообщению название соответствующей комнаты и собрать сообщения в структуру, где ключом будет строковое представление даты начала дня в 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 (Восточная Европа, стандартное время)
// }
// ...