11 Commits

Author SHA1 Message Date
Adrian Zürcher
103a07b7ac extend add responsible from single to array 2025-11-06 15:10:28 +01:00
Adrian Zürcher
a20a21d251 change start events to return event as data 2025-11-06 09:03:56 +01:00
Adrian Zürcher
ee7ce526f3 change new event from get to post 2025-11-06 08:56:00 +01:00
Adrian Zürcher
a938f41e94 add new function update event 2025-11-05 11:18:30 +01:00
Adrian Zürcher
1d09705adb fix wrong api call 2025-11-04 09:39:11 +01:00
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
6 changed files with 96 additions and 71 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("/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/import/csv", apiHandler.ImportCSV)

View File

@@ -15,23 +15,23 @@ func (a *APIHandler) StartNewEvent(c *gin.Context) {
return
}
name := c.Query("name")
if name == "" {
a.logger.Error("StartNewEvent", "missing query 'name'")
var event models.Event
err := c.BindJSON(&event)
if err != nil {
a.logger.Error("StartNewEvent", err)
c.JSON(http.StatusInternalServerError, nil)
return
}
if err := a.DbHandler.StartNewEvent(name); err != nil {
if err := a.DbHandler.StartNewEvent(&event); err != nil {
a.logger.Error("StartNewEvent", err)
c.JSON(http.StatusInternalServerError, nil)
c.JSON(http.StatusBadRequest, gin.H{"message": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{
"message": "New Event added " + name,
"message": "New Event added " + event.Name,
"data": event,
})
}
@@ -66,6 +66,36 @@ func (a *APIHandler) GetEvent(c *gin.Context) {
c.JSON(http.StatusOK, events)
}
func (a *APIHandler) UpdateEvent(c *gin.Context) {
if !a.DBHandlerIsInitialized() {
a.logger.Error("UpdateEvent", "database handler is not initialized")
c.JSON(http.StatusInternalServerError, nil)
return
}
var events []models.Event
err := c.BindJSON(&events)
if err != nil {
a.logger.Error("UpdateEvent", err)
c.JSON(http.StatusInternalServerError, nil)
return
}
for _, event := range events {
err = a.DbHandler.UpdateEvent(event.Id, event)
if err != nil {
a.logger.Error("UpdateEvent", err)
c.JSON(http.StatusBadRequest, gin.H{
"message": err.Error(),
})
return
}
}
c.JSON(http.StatusOK, gin.H{
"message": "event(s) updated",
})
}
func (a *APIHandler) DeleteEvent(c *gin.Context) {
if !a.DBHandlerIsInitialized() {
a.logger.Error("DeleteEvent", "database handler is not initialized")
@@ -115,7 +145,7 @@ func (a *APIHandler) AddNewAttendees(c *gin.Context) {
err = a.DbHandler.AddAttendeesToEvent(event)
if err != nil {
a.logger.Error("DeleteEvent", err)
a.logger.Error("AddNewAttendees", err)
c.JSON(http.StatusInternalServerError, gin.H{
"message": err.Error(),
@@ -147,7 +177,7 @@ func (a *APIHandler) DeleteAttendee(c *gin.Context) {
err = a.DbHandler.DeleteAttendeesFromEvent(event)
if err != nil {
a.logger.Error("DeleteAttendeesFromEvent", err)
a.logger.Error("DeleteAttendee", err)
c.JSON(http.StatusInternalServerError, gin.H{
"message": err.Error(),
})

View File

@@ -93,41 +93,23 @@ func (a *APIHandler) GetMember(c *gin.Context) {
c.JSON(http.StatusOK, members)
}
func (a *APIHandler) EditMember(c *gin.Context) {
func (a *APIHandler) UpdateMember(c *gin.Context) {
if !a.DBHandlerIsInitialized() {
a.logger.Error("EditMember", "database handler is not initialized")
c.JSON(http.StatusInternalServerError, nil)
return
}
var i int
var err error
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)
var members []models.Member
err := c.BindJSON(&members)
if err != nil {
a.logger.Error("EditMember", err)
c.JSON(http.StatusInternalServerError, nil)
return
}
err = a.DbHandler.UpdateMember(i, member)
for _, member := range members {
err = a.DbHandler.UpdateMember(member.Id, member)
if err != nil {
a.logger.Error("EditMember", err)
c.JSON(http.StatusBadRequest, gin.H{
@@ -135,8 +117,9 @@ func (a *APIHandler) EditMember(c *gin.Context) {
})
return
}
}
c.JSON(http.StatusOK, gin.H{
"message": "member updated",
"message": "member(s) updated",
})
}

View File

@@ -16,14 +16,15 @@ func (a *APIHandler) AddNewResponsible(c *gin.Context) {
return
}
var responsible models.Person
err := c.BindJSON(&responsible)
var responsibles []models.Person
err := c.BindJSON(&responsibles)
if err != nil {
a.logger.Error("AddNewResponsible", err)
c.JSON(http.StatusInternalServerError, nil)
return
}
for _, responsible := range responsibles {
err = a.DbHandler.AddNewResponsible(responsible)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
@@ -31,9 +32,10 @@ func (a *APIHandler) AddNewResponsible(c *gin.Context) {
})
return
}
}
c.JSON(http.StatusOK, gin.H{
"message": "responsible added",
"message": "responsible(s) added",
})
}

View File

@@ -8,33 +8,42 @@ import (
"gitea.tecamino.com/paadi/memberDB/models"
)
func (dh *DatabaseHandler) StartNewEvent(name string) error {
func (dh *DatabaseHandler) StartNewEvent(event *models.Event) error {
if !dh.DatabaseOpened() {
return errors.New("database not opened")
}
return dh.database.AddNewColum(&models.Event{
Name: name,
Date: time.Now().Format("2006-01-02 15:04:05"),
})
if nil == dh.database.Exists(&models.Event{}, "name", event.Name, false) {
return errors.New("event with name: " + event.Name + " exists already")
}
func (dh *DatabaseHandler) GetEvent(id uint) (attendees []models.Event, err error) {
event.Date = time.Now().Format("2006-01-02 15:04:05")
return dh.database.AddNewColum(&event)
}
func (dh *DatabaseHandler) GetEvent(id uint) (event []models.Event, err error) {
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 {
return
}
for i := range attendees {
attendees[i].Count = len(attendees[i].Attendees)
for i := range event {
event[i].Count = len(event[i].Attendees)
}
return
}
func (dh *DatabaseHandler) UpdateEvent(id int, event models.Event) (err error) {
if !dh.DatabaseOpened() {
return errors.New("database not opened")
}
return dh.database.UpdateValuesById(&event, uint(event.Id))
}
func (dh *DatabaseHandler) DeleteEvent(ids ...uint) error {
if !dh.DatabaseOpened() {
return errors.New("database not opened")
@@ -53,7 +62,7 @@ func (dh *DatabaseHandler) AddAttendeesToEvent(newEvent models.Event) error {
}
var event models.Event
err := dh.database.GetById(&event, uint(event.Id))
err := dh.database.GetById(&event, uint(newEvent.Id))
if err != nil {
return err
}
@@ -70,7 +79,7 @@ next:
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 {
@@ -79,7 +88,7 @@ func (dh *DatabaseHandler) DeleteAttendeesFromEvent(newEvent models.Event) error
}
var event models.Event
dh.database.GetById(&event, uint(event.Id))
dh.database.GetById(&event, uint(newEvent.Id))
next:
for _, newAttendee := range newEvent.Attendees {
@@ -91,5 +100,5 @@ next:
}
}
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("/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/import/csv", apiHandler.ImportCSV)
@@ -129,19 +129,20 @@ func TestMemberDB(t *testing.T) {
v1 := r.Group("v1")
v1.GET("/events", apiHandler.GetEvent)
v1.GET("/events/new", apiHandler.StartNewEvent)
v1.GET("/events/delete", apiHandler.DeleteEvent)
v1.GET("/members", apiHandler.GetMember)
v1.GET("/responsible", apiHandler.GetResponsible)
v1.POST("/database/open", apiHandler.OpenDatabase)
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/import/csv", apiHandler.ImportCSV)
v1.POST("/events/new", apiHandler.StartNewEvent)
v1.POST("/events/attendees/add", apiHandler.AddNewAttendees)
v1.POST("/events/attendees/delete", apiHandler.DeleteAttendee)
v1.POST("/events/edit", apiHandler.UpdateEvent)
v1.POST("/events/delete", apiHandler.DeleteEvent)
v1.POST("/responsible/add", apiHandler.AddNewResponsible)
v1.POST("/responsible/delete", apiHandler.DeleteResponsible)