diff --git a/models/publishers_add.go b/models/publishers_add.go new file mode 100644 index 0000000..ae3f77c --- /dev/null +++ b/models/publishers_add.go @@ -0,0 +1,6 @@ +package models + +func AddPublisher(publisher Publisher) (err error){ + _, err = x.Insert(&publisher) + return err +} \ No newline at end of file diff --git a/models/publishers_delete.go b/models/publishers_delete.go new file mode 100644 index 0000000..3e027a1 --- /dev/null +++ b/models/publishers_delete.go @@ -0,0 +1,19 @@ +package models + +func DeletePublisherByID(id int64) error { + // Delete the publisher + _, err := x.Id(id).Delete(&Publisher{}) + + if err != nil { + return err + } + + // Set all publisher to 0 on all book with this publisher + //book := Book{Publisher:0} + //book.Publisher = 0 + //_, err = x.Where("publisher = ?", id).Update(book) + _, err = x.Table("books").Where("publisher = ?", id).Update(map[string]interface{}{"publisher":0}) + + + return err +} \ No newline at end of file diff --git a/routes/api/v1/authors_add.go b/routes/api/v1/authors_add.go index 784553e..50307e0 100644 --- a/routes/api/v1/authors_add.go +++ b/routes/api/v1/authors_add.go @@ -6,7 +6,6 @@ import ( "git.mowie.cc/konrad/Library/models" "encoding/json" "strings" - "fmt" ) func AuthorAdd(c echo.Context) error { diff --git a/routes/api/v1/publishers_add.go b/routes/api/v1/publishers_add.go new file mode 100644 index 0000000..9c558ec --- /dev/null +++ b/routes/api/v1/publishers_add.go @@ -0,0 +1,35 @@ +package v1 + +import ( + "github.com/labstack/echo" + "net/http" + "git.mowie.cc/konrad/Library/models" + "encoding/json" + "strings" +) + +func PublisherAdd(c echo.Context) error { + // Check for Request Content + publisher := c.FormValue("publisher") + if publisher == "" { + return c.JSON(http.StatusBadRequest, models.Message{"No publisher model provided"}) + } + + // Decode the JSON + var publisherstruct models.Publisher + dec := json.NewDecoder(strings.NewReader(publisher)) + + err := dec.Decode(&publisherstruct) + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Error decoding publisher: " + err.Error()}) + } + + // Insert the publisher + err = models.AddPublisher(publisherstruct) + + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Error"}) + } + + return c.JSON(http.StatusOK, models.Message{"success"}) +} diff --git a/routes/api/v1/publishers_delete.go b/routes/api/v1/publishers_delete.go new file mode 100644 index 0000000..3e370a8 --- /dev/null +++ b/routes/api/v1/publishers_delete.go @@ -0,0 +1,40 @@ +package v1 + +import ( + "github.com/labstack/echo" + "strconv" + "net/http" + "git.mowie.cc/konrad/Library/models" +) + +func PublisherDelete(c echo.Context) error { + + id := c.Param("id") + + // Make int + publisherID, err := strconv.ParseInt(id, 10, 64) + + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Could not get publisher infos"}) + } + + // Check if the publisher exists + _, exists, err := models.GetPublisherByID(publisherID) + + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Could get publisher"}) + } + + if !exists { + return c.JSON(http.StatusBadRequest, models.Message{"The publisher does not exist."}) + } + + // Delete it + err = models.DeletePublisherByID(publisherID) + + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Could not delete publisher"}) + } + + return c.JSON(http.StatusOK, models.Message{"success"}) +} \ No newline at end of file diff --git a/routes/routes.go b/routes/routes.go index 534bb9a..7ec5c00 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -59,6 +59,8 @@ func RegisterRoutes(e *echo.Echo) { a.DELETE("/authors/:id", apiv1.AuthorDelete) // Manage Publishers + a.PUT("/publishers", apiv1.PublisherAdd) + a.DELETE("/publishers/:id", apiv1.PublisherDelete) // Manage Users @@ -73,22 +75,22 @@ func RegisterRoutes(e *echo.Echo) { POST /logout - ausloggen GET /books/:id - ✔ Buch anzeigen - POST /books/:id/edit - |Buch bearbeiten (inkl mengen) + POST /books/:id - |Buch bearbeiten (inkl mengen) DELETE /books/:id - ✔ |Buch löschen (+alle einträge in authors_books löschen dessen Bush dazu gehört) GET /books/search?s=se - ✔ Suchen GET /books/list - ✔ Auflisten PUT /books/add - ✔ |Hinzufügen GET /authors/:id - ✔ Autor anzeigen - POST /authors/:id/edit - |Autor bearbeiten - DELETE /authors/:id/delete - |Autor löschen (auch mit allem in books_author) + POST /authors/:id - |Autor bearbeiten + DELETE /authors/:id - ✔ |Autor löschen (auch mit allem in books_author) GET /authors/list - ✔ Autoren auflisten GET /authors/search?s=d - ✔ Autoren suchen - PUT /authors/add - |Hinzufügen + PUT /authors/add - ✔ |Hinzufügen GET /publishers/:id - ✔ Verlag anzeigen - POST /publishers/:id/edit - |Verlag bearbeiten - DELETE /publishers/:id/delete - |Verlag löschen (bei büchern Verlag auf 0 setzen) + POST /publishers/:id - |Verlag bearbeiten + DELETE /publishers/:id - |Verlag löschen (bei büchern Verlag auf 0 setzen) GET /publishers/list - ✔ Verlage auflisten GET /publishers/search?s= - ✔ Verlage suchen PUT /publishers/add - |Hinzufügen @@ -98,6 +100,6 @@ func RegisterRoutes(e *echo.Echo) { GET /user - Nutzer anzeigen PUT /user - |neue Nutzer anlegen DELETE /user/:id - |nutzer löschen - POST /user/:id/edit - |nutzer bearbeiten + POST /user/:id - |nutzer bearbeiten */ }