Switched to soft-deletion for client-sync event handling.
This commit is contained in:
parent
4bba0ed3a0
commit
f30b84aa3a
1 changed files with 15 additions and 10 deletions
|
|
@ -80,57 +80,62 @@ func (app *App) handleUpdateSettings(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *App) handleResetAttendees(w http.ResponseWriter, r *http.Request) {
|
func (app *App) handleResetAttendees(w http.ResponseWriter, r *http.Request) {
|
||||||
result, err := app.db.Exec(`DELETE FROM attendees`)
|
ts := now()
|
||||||
|
result, err := app.db.Exec(`UPDATE attendees SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL`, ts, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeError(w, err.Error(), http.StatusInternalServerError)
|
writeError(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n, _ := result.RowsAffected()
|
n, _ := result.RowsAffected()
|
||||||
|
|
||||||
writeJSON(w, map[string]any{"deleted": n})
|
writeJSON(w, map[string]any{"deleted": n})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *App) handleResetVolunteers(w http.ResponseWriter, r *http.Request) {
|
func (app *App) handleResetVolunteers(w http.ResponseWriter, r *http.Request) {
|
||||||
result, err := app.db.Exec(`DELETE FROM volunteers`)
|
ts := now()
|
||||||
|
result, err := app.db.Exec(`UPDATE volunteers SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL`, ts, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeError(w, err.Error(), http.StatusInternalServerError)
|
writeError(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n, _ := result.RowsAffected()
|
n, _ := result.RowsAffected()
|
||||||
|
|
||||||
writeJSON(w, map[string]any{"deleted": n})
|
writeJSON(w, map[string]any{"deleted": n})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *App) handleResetShifts(w http.ResponseWriter, r *http.Request) {
|
func (app *App) handleResetShifts(w http.ResponseWriter, r *http.Request) {
|
||||||
result, err := app.db.Exec(`DELETE FROM shifts`)
|
ts := now()
|
||||||
|
result, err := app.db.Exec(`UPDATE shifts SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL`, ts, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeError(w, err.Error(), http.StatusInternalServerError)
|
writeError(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n, _ := result.RowsAffected()
|
n, _ := result.RowsAffected()
|
||||||
|
// Also soft-delete orphaned volunteer_shifts
|
||||||
|
app.db.Exec(`UPDATE volunteer_shifts SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL AND shift_id IN (SELECT id FROM shifts WHERE deleted_at IS NOT NULL)`, ts, ts)
|
||||||
writeJSON(w, map[string]any{"deleted": n})
|
writeJSON(w, map[string]any{"deleted": n})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *App) handleResetDepartments(w http.ResponseWriter, r *http.Request) {
|
func (app *App) handleResetDepartments(w http.ResponseWriter, r *http.Request) {
|
||||||
result, err := app.db.Exec(`DELETE FROM departments`)
|
ts := now()
|
||||||
|
// Soft-delete shifts in these departments first (so sync picks them up)
|
||||||
|
app.db.Exec(`UPDATE volunteer_shifts SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL AND shift_id IN (SELECT id FROM shifts WHERE department_id IN (SELECT id FROM departments WHERE deleted_at IS NULL))`, ts, ts)
|
||||||
|
app.db.Exec(`UPDATE shifts SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL AND department_id IN (SELECT id FROM departments WHERE deleted_at IS NULL)`, ts, ts)
|
||||||
|
result, err := app.db.Exec(`UPDATE departments SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL`, ts, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeError(w, err.Error(), http.StatusInternalServerError)
|
writeError(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n, _ := result.RowsAffected()
|
n, _ := result.RowsAffected()
|
||||||
|
|
||||||
writeJSON(w, map[string]any{"deleted": n})
|
writeJSON(w, map[string]any{"deleted": n})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (app *App) handleResetVolunteerShifts(w http.ResponseWriter, r *http.Request) {
|
func (app *App) handleResetVolunteerShifts(w http.ResponseWriter, r *http.Request) {
|
||||||
result, err := app.db.Exec(`DELETE FROM volunteer_shifts`)
|
ts := now()
|
||||||
|
result, err := app.db.Exec(`UPDATE volunteer_shifts SET deleted_at=?, updated_at=? WHERE deleted_at IS NULL`, ts, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeError(w, err.Error(), http.StatusInternalServerError)
|
writeError(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n, _ := result.RowsAffected()
|
n, _ := result.RowsAffected()
|
||||||
|
|
||||||
writeJSON(w, map[string]any{"deleted": n})
|
writeJSON(w, map[string]any{"deleted": n})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue