6 Commits

Author SHA1 Message Date
Adrian Zürcher
4ee558b340 fix wrong api call 2025-11-04 09:38:35 +01:00
Adrian Zürcher
ad44a65087 update member from one to several ids 2025-11-04 09:35:52 +01:00
Adrian Zürcher
e3870de7d5 fix wrong mix of new current ids 2025-11-04 08:24:27 +01:00
Adrian Zürcher
25f965cd72 fix wrong event id 2025-11-04 08:20:15 +01:00
Adrian Zürcher
25f744b26c change error output of startnewevent 2025-11-01 23:22:46 +01:00
Adrian Zürcher
ec77c8a488 add exists check to events and fix wrong event name 2025-11-01 23:17:58 +01:00
5 changed files with 31 additions and 45 deletions

View File

@@ -41,7 +41,7 @@ func NewAPI(host string, port int, logger *logging.Logger) (*API, error) {
v1.POST("/database/open", apiHandler.OpenDatabase) v1.POST("/database/open", apiHandler.OpenDatabase)
v1.POST("/members/add", apiHandler.AddNewMember) v1.POST("/members/add", apiHandler.AddNewMember)
v1.POST("/members/edit", apiHandler.EditMember) v1.POST("/members/edit", apiHandler.UpdateMember)
v1.POST("/members/delete", apiHandler.DeleteMember) v1.POST("/members/delete", apiHandler.DeleteMember)
v1.POST("/members/import/csv", apiHandler.ImportCSV) v1.POST("/members/import/csv", apiHandler.ImportCSV)

View File

@@ -25,8 +25,7 @@ func (a *APIHandler) StartNewEvent(c *gin.Context) {
if err := a.DbHandler.StartNewEvent(name); err != nil { if err := a.DbHandler.StartNewEvent(name); err != nil {
a.logger.Error("StartNewEvent", err) a.logger.Error("StartNewEvent", err)
c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
c.JSON(http.StatusInternalServerError, nil)
return return
} }
@@ -115,7 +114,7 @@ func (a *APIHandler) AddNewAttendees(c *gin.Context) {
err = a.DbHandler.AddAttendeesToEvent(event) err = a.DbHandler.AddAttendeesToEvent(event)
if err != nil { if err != nil {
a.logger.Error("DeleteEvent", err) a.logger.Error("AddNewAttendees", err)
c.JSON(http.StatusInternalServerError, gin.H{ c.JSON(http.StatusInternalServerError, gin.H{
"message": err.Error(), "message": err.Error(),
@@ -147,7 +146,7 @@ func (a *APIHandler) DeleteAttendee(c *gin.Context) {
err = a.DbHandler.DeleteAttendeesFromEvent(event) err = a.DbHandler.DeleteAttendeesFromEvent(event)
if err != nil { if err != nil {
a.logger.Error("DeleteAttendeesFromEvent", err) a.logger.Error("DeleteAttendee", err)
c.JSON(http.StatusInternalServerError, gin.H{ c.JSON(http.StatusInternalServerError, gin.H{
"message": err.Error(), "message": err.Error(),
}) })

View File

@@ -93,50 +93,33 @@ func (a *APIHandler) GetMember(c *gin.Context) {
c.JSON(http.StatusOK, members) c.JSON(http.StatusOK, members)
} }
func (a *APIHandler) EditMember(c *gin.Context) { func (a *APIHandler) UpdateMember(c *gin.Context) {
if !a.DBHandlerIsInitialized() { if !a.DBHandlerIsInitialized() {
a.logger.Error("EditMember", "database handler is not initialized") a.logger.Error("EditMember", "database handler is not initialized")
c.JSON(http.StatusInternalServerError, nil) c.JSON(http.StatusInternalServerError, nil)
return return
} }
var i int var members []models.Member
var err error err := c.BindJSON(&members)
id := c.Query("id")
if id != "" {
i, err = strconv.Atoi(id)
if err != nil {
a.logger.Error("EditMember", err)
c.JSON(http.StatusInternalServerError, nil)
return
}
} else {
a.logger.Error("EditMember", err)
c.JSON(http.StatusBadRequest, gin.H{
"message": "query parameter 'id' missing",
})
return
}
var member models.Member
err = c.BindJSON(&member)
if err != nil { if err != nil {
a.logger.Error("EditMember", err) a.logger.Error("EditMember", err)
c.JSON(http.StatusInternalServerError, nil) c.JSON(http.StatusInternalServerError, nil)
return return
} }
err = a.DbHandler.UpdateMember(i, member) for _, member := range members {
if err != nil { err = a.DbHandler.UpdateMember(member.Id, member)
a.logger.Error("EditMember", err) if err != nil {
c.JSON(http.StatusBadRequest, gin.H{ a.logger.Error("EditMember", err)
"message": err.Error(), c.JSON(http.StatusBadRequest, gin.H{
}) "message": err.Error(),
return })
return
}
} }
c.JSON(http.StatusOK, gin.H{ c.JSON(http.StatusOK, gin.H{
"message": "member updated", "message": "member(s) updated",
}) })
} }

View File

@@ -13,24 +13,28 @@ func (dh *DatabaseHandler) StartNewEvent(name string) error {
return errors.New("database not opened") return errors.New("database not opened")
} }
if nil == dh.database.Exists(&models.Event{}, "name", name, false) {
return errors.New("event with name: " + name + " exists already")
}
return dh.database.AddNewColum(&models.Event{ return dh.database.AddNewColum(&models.Event{
Name: name, Name: name,
Date: time.Now().Format("2006-01-02 15:04:05"), Date: time.Now().Format("2006-01-02 15:04:05"),
}) })
} }
func (dh *DatabaseHandler) GetEvent(id uint) (attendees []models.Event, err error) { func (dh *DatabaseHandler) GetEvent(id uint) (event []models.Event, err error) {
if !dh.DatabaseOpened() { if !dh.DatabaseOpened() {
return attendees, errors.New("database not opened") return event, errors.New("database not opened")
} }
err = dh.database.GetById(&attendees, id) err = dh.database.GetById(&event, id)
if err != nil { if err != nil {
return return
} }
for i := range attendees { for i := range event {
attendees[i].Count = len(attendees[i].Attendees) event[i].Count = len(event[i].Attendees)
} }
return return
} }
@@ -53,7 +57,7 @@ func (dh *DatabaseHandler) AddAttendeesToEvent(newEvent models.Event) error {
} }
var event models.Event var event models.Event
err := dh.database.GetById(&event, uint(event.Id)) err := dh.database.GetById(&event, uint(newEvent.Id))
if err != nil { if err != nil {
return err return err
} }
@@ -70,7 +74,7 @@ next:
event.Count = len(event.Attendees) event.Count = len(event.Attendees)
return dh.database.UpdateValuesById(&event, uint(event.Id)) return dh.database.UpdateValuesById(&event, uint(newEvent.Id))
} }
func (dh *DatabaseHandler) DeleteAttendeesFromEvent(newEvent models.Event) error { func (dh *DatabaseHandler) DeleteAttendeesFromEvent(newEvent models.Event) error {
@@ -79,7 +83,7 @@ func (dh *DatabaseHandler) DeleteAttendeesFromEvent(newEvent models.Event) error
} }
var event models.Event var event models.Event
dh.database.GetById(&event, uint(event.Id)) dh.database.GetById(&event, uint(newEvent.Id))
next: next:
for _, newAttendee := range newEvent.Attendees { for _, newAttendee := range newEvent.Attendees {
@@ -91,5 +95,5 @@ next:
} }
} }
event.Count = len(event.Attendees) event.Count = len(event.Attendees)
return dh.database.UpdateValuesById(&event, uint(event.Id)) return dh.database.UpdateValuesById(&event, uint(newEvent.Id))
} }

View File

@@ -44,7 +44,7 @@ func TestErrors(t *testing.T) {
v1.POST("/database/open", apiHandler.OpenDatabase) v1.POST("/database/open", apiHandler.OpenDatabase)
v1.POST("/members/add", apiHandler.AddNewMember) v1.POST("/members/add", apiHandler.AddNewMember)
v1.POST("/members/edit", apiHandler.EditMember) v1.POST("/members/edit", apiHandler.UpdateMember)
v1.POST("/members/delete", apiHandler.DeleteMember) v1.POST("/members/delete", apiHandler.DeleteMember)
v1.POST("/members/import/csv", apiHandler.ImportCSV) v1.POST("/members/import/csv", apiHandler.ImportCSV)