Closed qelphybox closed 3 years ago
@qelphybox @Fulgrim_94 готово, бери
беру
Привет) У меня по этой задаче есть пара вопросов https://github.com/qelphybox/hakeshonassybot/issues/269
- Не описана таблица с сообщениями и мало полей в таблице с чатами и юзерами, это надо добавлять или делать только то, что в задаче?
- Таблицу metrics и модель для нее просто создать? Hе надо привязывать к ней никакой логики?
- Написать логику записи в таблицы users и chats после того как пришло новое сообщение?
Модель то нам вроде как не нужна. Нам нужен репозиторий, то есть некоторый объект который дает нам доступ к данным таблицы. например:
metrics.insert([{ user_chats_id: 1, photoCount: 1, timestamp: 1621284352 }])
// INSERT INTO metrics(user_chats_id, photoCount, timestamp)
// VALUES (1, 1, "2021-05-17T20:45:52")
metrics.fetchCounts({ chat_id: 1, from: new Date('2021-05-01T00:00:00Z'), to: new Date('2021-05-07T00:00:00Z')})
// вернет [{ user_id: 1, photoCount: 2, ...}]
// сделав такой запрос
// SELECT user_id, SUM(photoCount), ...
// FROM metrics m JOIN users_chats uc ON m.users_chats_id = uc.id
// WHERE chat_id = 1 AND timestamp BETWEEN "2021-05-01T00:00:00Z" AND "2021-05-07T00:00:00Z"
// GROUP BY user_id
metrics - объект репозиторий, он умеет выдавать данные из бд если попросить. Нам не надо orm чтобы маппить модели, будем просто запросы в бд делать
В ветке https://github.com/qelphybox/hakeshonassybot/pull/410
1) Сбор метрик из пг, выпить сбор из монги, не выпиливая инсерт в монгу 2) Настроить ci: добавить пг 3) настроить тесты: в setupTeadown добавить пгклиент 4) Переделать dbClient c Pool на Client
Сейчас статистика очень медленная, это от неправильно организации данных и не правильного сбора статистики. В этом таске нужно:
Каждый пункт зависит от результатов предыдущего. Какие данные и как собирать обсудим лично и зафиксируем в комментариях.
План: 1) добавить pg в dev окружение 2) организовать миграции для такой схемы
3) Организовать запись в бд этих данных Достаем метрики примерно так и записываем в бд
4) написать скрипт перегона данных из mongo в pg: кусками достаем сообщения из монги маппим их в метрики, целый батч инсертим в pg
Заметки: https://www.lightbase.io/freeforlife/ - 500 мб бесплатно