feat(playlists): wire Refresh into PUT /api/me/timezone + registration
Completes the server side of #392 Half B. PUT /api/me/timezone now calls scheduler.Refresh(ctx, userID) after the DB write so the rescheduled daily-at-03:00-local job takes effect synchronously. Failure to refresh is logged but doesn't undo the DB write — the hourly reconciliation pass would pick it up within an hour regardless. POST /api/auth/register calls Refresh after successful user insert so brand-new users get scheduled immediately rather than waiting for the hourly pass to discover them. system_cron.go deleted: the new scheduler subsumes its responsibilities. The StartSystemPlaylistCron call in main.go is also removed. Server restart now runs the new scheduler's startup recovery + catch-up instead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -202,6 +202,17 @@ func (h *handlers) handleRegister(w http.ResponseWriter, r *http.Request) {
|
||||
map[string]any{"token": usedInviteToken})
|
||||
}
|
||||
|
||||
// Register the new user with the playlist scheduler so their daily
|
||||
// builds are scheduled without waiting for the hourly reconciliation
|
||||
// pass. Failure here is logged but doesn't fail registration — the
|
||||
// next hourly pass will pick them up.
|
||||
if h.playlistScheduler != nil {
|
||||
if err := h.playlistScheduler.Refresh(r.Context(), user.ID); err != nil {
|
||||
h.logger.Warn("api: scheduler refresh after registration",
|
||||
"user_id", uuidToString(user.ID), "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusOK, LoginResponse{
|
||||
Token: sessionToken,
|
||||
User: UserView{
|
||||
|
||||
@@ -56,5 +56,15 @@ func (h *handlers) handlePutTimezone(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Reschedule the user's daily build at their new timezone. Failure
|
||||
// here doesn't undo the DB write — the hourly reconciliation pass
|
||||
// would pick up the new tz within an hour at worst.
|
||||
if h.playlistScheduler != nil {
|
||||
if err := h.playlistScheduler.Refresh(r.Context(), user.ID); err != nil {
|
||||
h.logger.Warn("api: scheduler refresh after timezone update",
|
||||
"user_id", uuidToString(user.ID), "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user