"이벤트"(회의, 생일 파티 등) 레코드의 db가 있으며 각 이벤트의 필드는 endTime
입니다. 이벤트가 끝나면 과거 이벤트마다 2-3 개의 이메일을 보내고 싶습니다. 지금 각 db 레코드 타임 스탬프를 기반으로 알림 전자 메일 보내기
- 2:01 오후를 : 모든 이벤트는 1-2pm 사이에 종료 찾기 3:01 pm에 이메일
- 을 보내 : 오후 2시 -3시 사이에 끝나는 모든 이벤트를 찾을 수, 4:01 pm에 이메일
- 을 보내 : 3-4pm 사이에 끝나는 모든 이벤트를 찾을 수, 5:01 pm에 이메일
- 를 보냅니다. ..
그러나 오후 3시 01 분 작업이 실패한 경우 (Heroku가 내 휴식 API를 충돌시키고 이메일 서비스 제공 업체가 다운되는 경우 등) 오후 2시 사이에 종료되는 이벤트는 이메일을받지 못합니다.
이메일이 성공적으로 전송 된 경우 현재 db 레코드는 notified
으로 표시되지 않습니다. 그렇게해야만 cron 스크립트를 "현재 시간 이전에 모든 레코드를 찾으십시오."(이전에 보내지 않은 레코드를 모두 잡는 곳인 notified=false
)가 변경 될 수 있습니까? 그런 다음 성공적으로 보내는 전자 메일의 각 유형별로 플래그를 설정 하시겠습니까?
플래그를 설정하지 않는 더 깨끗한 방법이 있습니까?
는 (그것은 도대체이 질문에 대한 제목과 태그와 함께오고 - 제안/편집 환영!)
이메일 유형별로 필드 (및 색인)를 추가하는 것이 좋은 방법인지 확실하지 않습니다. 그러나 제가 그렇게한다면 도움이 될 것입니다. – thatmarvin
@thatmarvin 한 가지 대안은 전송 된 테이블과 보내지 않은 알림을위한 테이블 두 가지를 갖는 것입니다. 알림이 전송되면 한 테이블에서 다른 테이블로 이동하십시오. 분명히 두 테이블 모두에 걸쳐 있고 FK를 복제 할 수있는 키가 필요하다면 문제가 될 수 있지만, DBMS가 지원하는 경우 테이블을 분할하여 (논리적으로 하나의 테이블이므로) 완화 할 수 있습니다. –
테이블이 여전히 작기 때문에 지금은 가능한 가장 간단한 솔루션을 원합니다. 실제로 MongoDB를 사용하고 있지만 postgresql으로 곧 전환 할 계획입니다 (따라서 오해의 소지가있는 태그). 내가 찾고있는 대답은 "그렇습니다, 당신은 확실히 이것을 할 깃발이 필요합니다"또는 "아니오, 깃발없이 할 수있는 다른 일이 있습니다"입니다. 네가 "예"라고 말하는 것처럼 들리네! – thatmarvin