deleteEvents.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package api
  2. import (
  3. "net/http"
  4. "encoding/json"
  5. "GoApi/internal/repository"
  6. )
  7. type DeleteEventsController struct {
  8. repo repository.EventRepository
  9. }
  10. func NewDeleteEventsController(repo repository.EventRepository) DeleteEventsController {
  11. return DeleteEventsController{repo: repo}
  12. }
  13. type DeleteEventsRequest struct {
  14. EventID int `json:"event_id"`
  15. }
  16. func (c *DeleteEventsController) DeleteEventHandler(w http.ResponseWriter, r *http.Request) {
  17. if r.Method != http.MethodPost {
  18. http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
  19. return
  20. }
  21. var req DeleteEventsRequest
  22. if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
  23. http.Error(w, "Invalid request body", http.StatusBadRequest)
  24. return
  25. }
  26. if req.EventID <= 0 {
  27. http.Error(w, "Event ID is required", http.StatusBadRequest)
  28. return
  29. }
  30. rows, err := c.repo.DeleteEvent(req.EventID)
  31. if err != nil {
  32. http.Error(w, "Failed to delete event: "+err.Error(), http.StatusInternalServerError)
  33. return
  34. }
  35. if rows == 0 {
  36. http.Error(w, "Event not found", http.StatusNotFound)
  37. return
  38. }
  39. w.Header().Set("Content-Type", "application/json")
  40. json.NewEncoder(w).Encode(map[string]interface{}{
  41. "deleted": rows,
  42. "message": "Event deleted successfully",
  43. })
  44. }