@@ -17,6 +17,9 @@ import (
1717 "github.com/sndcds/uranus/model"
1818)
1919
20+ // TODO: Insert event, add ticket_link
21+ // TODO: Implement simulation mode without inserting data
22+
2023type eventPayload struct {
2124 ContentLanguage string `json:"content_language" binding:"required"`
2225 ReleaseStatus * string `json:"release_status" binding:"required"`
@@ -27,6 +30,7 @@ type eventPayload struct {
2730 Summary * string `json:"summary"`
2831 Tags []string `json:"tags"`
2932 SourceUrl * string `json:"source_url"`
33+ SourceImageUrl * string `json:"source_image_url"`
3034 OnlineLink * string `json:"online_link"`
3135 OrganizationId * int `json:"organization_id" binding:"required"`
3236 OrganizationKey * string `json:"organization_key" binding:"required"`
@@ -42,6 +46,7 @@ type eventPayload struct {
4246 MaxAttendees * int `json:"max_attendees"`
4347 PriceType model.PriceType `json:"price_type"`
4448 Currency * string `json:"currency"`
49+ TicketLink * string `json:"ticket_link"`
4550 TicketFlags []string `json:"ticket_flags"`
4651 Custom * string `json:"custom"`
4752 Style * string `json:"style"`
@@ -59,10 +64,12 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
5964 // Read the body
6065 body , err := io .ReadAll (gc .Request .Body )
6166 if err != nil {
67+ debugf ("Error: %v" , err )
6268 apiRequest .Error (http .StatusBadRequest , "failed to read request body" )
6369 return
6470 }
6571 if len (body ) == 0 {
72+ debugf ("empty request body" )
6673 apiRequest .Error (http .StatusBadRequest , "empty request body" )
6774 return
6875 }
@@ -75,6 +82,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
7582 if err != nil {
7683 var syntaxErr * json.SyntaxError
7784 var typeErr * json.UnmarshalTypeError
85+ debugf ("Error: %v" , err )
7886
7987 switch {
8088 case errors .As (err , & syntaxErr ):
@@ -95,6 +103,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
95103 return
96104 }
97105 if decoder .More () {
106+ debugf ("Error decoder.More()" )
98107 apiRequest .Error (http .StatusBadRequest , "multiple JSON objects are not allowed" )
99108 return
100109 }
@@ -105,6 +114,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
105114 var unmarshalTypeError * json.UnmarshalTypeError
106115 var syntaxErr * json.SyntaxError
107116 var invalidUnmarshalError * json.InvalidUnmarshalError
117+ debugf ("Error: %v" , err )
108118
109119 switch {
110120 case errors .As (err , & syntaxErr ):
@@ -136,11 +146,13 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
136146 // Validation
137147 validationErr := payload .Validate ()
138148 if validationErr != nil {
149+ debugf ("Error: %v" , validationErr )
139150 apiRequest .Error (http .StatusBadRequest , validationErr .Error ())
140151 return
141152 }
142153
143154 if payload .OrganizationId == nil {
155+ debugf ("payload.OrganizationId == nil" )
144156 apiRequest .Error (http .StatusBadRequest , "organizationId is required" )
145157 return
146158 }
@@ -159,6 +171,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
159171 if payload .VenueId != nil {
160172 venuePermissions , err := h .GetUserEffectiveVenuePermissions (gc , tx , userId , * payload .VenueId )
161173 if err != nil {
174+ debugf ("Error: %v" , err )
162175 return & ApiTxError {Code : http .StatusForbidden , Err : err }
163176 }
164177 if ! venuePermissions .Has (app .PermChooseVenue ) {
@@ -229,6 +242,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
229242 return & ApiTxError {Code : http .StatusInternalServerError , Err : err }
230243 }
231244 if ! venuePermissions .Has (app .PermChooseVenue ) {
245+ debugf ("Forbidden userId %d, venueId: %d" , userId , * d .VenueId )
232246 return ApiErrForbidden ("" )
233247 }
234248
@@ -259,6 +273,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
259273 d .AllDay ,
260274 userId )
261275 if err != nil {
276+ debugf ("Error: %v" , err )
262277 return & ApiTxError {
263278 Code : http .StatusInternalServerError ,
264279 Err : fmt .Errorf ("failed to insert event_date: %v" , err ),
@@ -287,6 +302,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
287302
288303 err = RefreshEventProjections (ctx , tx , "event" , []int {newEventId })
289304 if err != nil {
305+ debugf ("Error: %v" , err )
290306 return & ApiTxError {
291307 Code : http .StatusInternalServerError ,
292308 Err : fmt .Errorf ("refresh projection tables failed: %v" , err ),
@@ -295,6 +311,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
295311
296312 err = RefreshEventProjections (ctx , tx , "event" , []int {newEventId })
297313 if err != nil {
314+ debugf ("Error: %v" , err )
298315 return & ApiTxError {
299316 Code : http .StatusInternalServerError ,
300317 Err : fmt .Errorf ("refresh projection tables failed: %v" , err ),
@@ -308,8 +325,7 @@ func (h *ApiHandler) AdminCreateEvent(gc *gin.Context) {
308325 return
309326 }
310327
311- apiRequest .Metadata ["created_event_id" ] = newEventId
312- apiRequest .SuccessNoData (http .StatusCreated , "" )
328+ apiRequest .Success (http .StatusCreated , gin.H {"created_event_id" : newEventId }, "" )
313329}
314330
315331// Validate validates the eventPayload struct
@@ -365,9 +381,11 @@ func (e *eventPayload) Validate() error {
365381 }
366382
367383 // Validate VenueId
384+ /* 2026-03-01, venueId not neccessary anymore in event
368385 if !e.hasVenue() {
369386 errs = append(errs, "event must have venueId")
370387 }
388+ */
371389
372390 // Validate ExternalId (optional)
373391 if err := app .ValidateOptionalNonEmptyString ("external_id" , e .ExternalId ); err != nil {
0 commit comments