Abstimmung Ja/Nein statt Links/Rechts

Modus-Werte yes/no statt left/right in DB, API und Statistik; Knöpfe
"Ja"/"Nein". Bestehende Stimmen müssen per SQL migriert werden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TiXsPUqw7oeomZ8wZrQW5q
This commit is contained in:
irrlicht
2026-09-29 18:14:57 +02:00
co-authored by Claude Opus 5.5
parent 3d2447fe35
commit b6cf8c7fa0
8 changed files with 35 additions and 35 deletions
+8 -8
View File
@@ -540,20 +540,20 @@ func handleBump(w http.ResponseWriter, r *http.Request) error {
// writeTally schreibt die Zähler und die eigene Auswahl (selected) für einen
// Beitrag. Ist uid == 0 (nicht eingeloggt), ist selected immer "none".
func writeTally(w http.ResponseWriter, pid, uid int64) error {
var left, right int64
var yes, no int64
var selected string
if err := db.QueryRow(
`SELECT COUNT(*) FILTER (WHERE mode = 'left'),
COUNT(*) FILTER (WHERE mode = 'right'),
`SELECT COUNT(*) FILTER (WHERE mode = 'yes'),
COUNT(*) FILTER (WHERE mode = 'no'),
COALESCE(MAX(mode) FILTER (WHERE uid = $2), 'none')
FROM vote WHERE pid = $1`, pid, uid).
Scan(&left, &right, &selected); err != nil {
Scan(&yes, &no, &selected); err != nil {
return Internal(err)
}
writeJSON(w, http.StatusOK, map[string]any{
"pid": pid,
"left": left,
"right": right,
"yes": yes,
"no": no,
"selected": selected,
})
return nil
@@ -585,8 +585,8 @@ func handleVote(w http.ResponseWriter, r *http.Request) error {
uid := uidFromContext(r.Context())
mode := r.FormValue("mode")
if mode != "left" && mode != "right" {
return Invalid("vote.bad_mode", "Ungültiger Modus (left oder right)").At("mode")
if mode != "yes" && mode != "no" {
return Invalid("vote.bad_mode", "Ungültiger Modus (yes oder no)").At("mode")
}
// Nur auf existierende Beiträge abstimmen, sonst entstehen Waisen-Votes.