Реляционная алгебра здесь не при чем) Мне нужна функция вида getUsersToNotify(now: Date, allUsers: [User]) -> [User]
внутри делаешь select < triggered_at и получаешь. другое дело, что скорее всего тебе нужна как минимум at least once семантика хэндлинга, так что лучше выполнять нотификации в контексте выборки одного юзера
Либо я дурак, либо лыжи не едут. Вот у меня есть расписание в формате start...end и step. Есть функция, которая выполняется каждый час. Этой функции нужно получить всех пользователей, кому нужно отправить уведомление
Либо я дурак, либо лыжи не едут. Вот у меня есть расписание в формате start...end и step. Есть функция, которая выполняется каждый час. Этой функции нужно получить всех пользователей, кому нужно отправить уведомление
> Вот у меня есть расписание в формате start...end и step. это конфигурация для пользователя при сохранении в базу для него создаётся триггер на ближайшее срабатывание
запись вида [user, datetime, ...] если datetime < now — пора отправлять уведомление после отправки посмотреть на текущее расписание пользователя и сгенерировать следующий триггер
запись вида [user, datetime, ...] если datetime < now — пора отправлять уведомление после отправки посмотреть на текущее расписание пользователя и сгенерировать следующий триггер
когда юзер меняет расписание, текущий триггер удаляется и создаётся новый
запись вида [user, datetime, ...] если datetime < now — пора отправлять уведомление после отправки посмотреть на текущее расписание пользователя и сгенерировать следующий триггер
запись вида [user, datetime, ...] если datetime < now — пора отправлять уведомление после отправки посмотреть на текущее расписание пользователя и сгенерировать следующий триггер
Так это ни чем не отличается от моего изначального варианта за исключением лишь того, что «триггер» генерится при изменении настроек, а не после отправки)
Так это ни чем не отличается от моего изначального варианта за исключением лишь того, что «триггер» генерится при изменении настроек, а не после отправки)
Мы можем сгенерировать все триггеры сразу, потому что их не бесконечное кол-во) Максимум 23 на пользователя при шаге в 1 час и в два раза больше при шаге в 30 минут)
1. ты мапишь скедулинг логику на реляционную алгебру 2. у тебя нет никакого контроля на статусом выполнения. что если выбиралка юзеров зафейлилась на середине? отправить первой половине опять?
Мы можем сгенерировать все триггеры сразу, потому что их не бесконечное кол-во) Максимум 23 на пользователя при шаге в 1 час и в два раза больше при шаге в 30 минут)
тебе не нужно генерировать все триггеры сразу, тебе нужно сгенерировать только один