Add admin location editing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 23:05:17 -04:00
parent 44c20d54ff
commit 3afef25b4c
5 changed files with 47 additions and 0 deletions
+3
View File
@@ -15,6 +15,9 @@ UPDATE events SET description = ? WHERE id = ?;
-- name: UpdateEvent :exec -- name: UpdateEvent :exec
UPDATE events SET title = ?, date = ?, time = ?, location = ? WHERE id = ?; UPDATE events SET title = ?, date = ?, time = ?, location = ? WHERE id = ?;
-- name: UpdateEventLocation :exec
UPDATE events SET location = ? WHERE id = ?;
-- name: DeleteEvent :exec -- name: DeleteEvent :exec
DELETE FROM events WHERE id = ?; DELETE FROM events WHERE id = ?;
+14
View File
@@ -719,6 +719,20 @@ func (q *Queries) UpdateEventDescription(ctx context.Context, arg UpdateEventDes
return err return err
} }
const updateEventLocation = `-- name: UpdateEventLocation :exec
UPDATE events SET location = ? WHERE id = ?
`
type UpdateEventLocationParams struct {
Location string
ID int64
}
func (q *Queries) UpdateEventLocation(ctx context.Context, arg UpdateEventLocationParams) error {
_, err := q.db.ExecContext(ctx, updateEventLocation, arg.Location, arg.ID)
return err
}
const updateRsvp = `-- name: UpdateRsvp :exec const updateRsvp = `-- name: UpdateRsvp :exec
UPDATE rsvps SET name = ?, note = ?, plus_one = ? WHERE id = ? UPDATE rsvps SET name = ?, note = ?, plus_one = ? WHERE id = ?
` `
+18
View File
@@ -578,6 +578,24 @@ func (s *Server) handleUpdateDescription(w http.ResponseWriter, r *http.Request)
http.Redirect(w, r, fmt.Sprintf("/e/%s/admin/%s", event.Slug, event.AdminToken), http.StatusSeeOther) http.Redirect(w, r, fmt.Sprintf("/e/%s/admin/%s", event.Slug, event.AdminToken), http.StatusSeeOther)
} }
func (s *Server) handleUpdateLocation(w http.ResponseWriter, r *http.Request) {
event := s.authorizeAdmin(w, r, false)
if event == nil {
return
}
r.Body = http.MaxBytesReader(w, r.Body, 8*1024)
r.ParseForm()
location := sanitize(r.FormValue("location"), maxFieldLen)
s.q.UpdateEventLocation(r.Context(), db.UpdateEventLocationParams{
Location: location,
ID: event.ID,
})
http.Redirect(w, r, fmt.Sprintf("/e/%s/admin/%s", event.Slug, event.AdminToken), http.StatusSeeOther)
}
func (s *Server) handleCreateSlot(w http.ResponseWriter, r *http.Request) { func (s *Server) handleCreateSlot(w http.ResponseWriter, r *http.Request) {
event := s.authorizeAdmin(w, r, false) event := s.authorizeAdmin(w, r, false)
if event == nil { if event == nil {
+1
View File
@@ -194,6 +194,7 @@ func main() {
// Admin // Admin
r.Get("/e/{slug}/admin/{token}", srv.handleAdmin) r.Get("/e/{slug}/admin/{token}", srv.handleAdmin)
r.Post("/e/{slug}/admin/{token}/description", srv.handleUpdateDescription) r.Post("/e/{slug}/admin/{token}/description", srv.handleUpdateDescription)
r.Post("/e/{slug}/admin/{token}/location", srv.handleUpdateLocation)
r.Post("/e/{slug}/admin/{token}/slot", srv.handleCreateSlot) r.Post("/e/{slug}/admin/{token}/slot", srv.handleCreateSlot)
r.Delete("/e/{slug}/admin/{token}/slot/{slotID}", srv.handleDeleteSlot) r.Delete("/e/{slug}/admin/{token}/slot/{slotID}", srv.handleDeleteSlot)
+11
View File
@@ -75,6 +75,17 @@
</div> </div>
{{if .IsAdmin}} {{if .IsAdmin}}
<div class="section-label" style="margin-top:40px">Admin: Location</div>
<div class="claim-form-wrapper">
<form method="POST" action="/e/{{.Event.Slug}}/admin/{{.Event.AdminToken}}/location">
<div class="form-row">
<label>Location</label>
<input type="text" name="location" value="{{.Event.Location}}" placeholder="e.g. Central Park">
</div>
<button class="btn-submit" type="submit">Save location</button>
</form>
</div>
<div class="section-label" style="margin-top:40px">Admin: Description</div> <div class="section-label" style="margin-top:40px">Admin: Description</div>
<div class="claim-form-wrapper"> <div class="claim-form-wrapper">
<form method="POST" action="/e/{{.Event.Slug}}/admin/{{.Event.AdminToken}}/description"> <form method="POST" action="/e/{{.Event.Slug}}/admin/{{.Event.AdminToken}}/description">