diff --git a/models/books_list.go b/models/books_list.go index fbf39ce..cf4522d 100644 --- a/models/books_list.go +++ b/models/books_list.go @@ -7,15 +7,23 @@ type BookPublisher struct { Publisher `xorm:"extends"` } -func ListBooks() (books []*Book, err error) { +func ListBooks(searchterm string) (books []*Book, err error) { - err = x.Table("books"). - //Join("INNER", "publishers", "books.publisher = publishers.id"). - Find(&books) - if err != nil { - fmt.Println("Error getting Books", err) + if searchterm == "" { + err = x.Table("books"). + //Join("INNER", "publishers", "books.publisher = publishers.id"). + Find(&books) + if err != nil { + fmt.Println("Error getting Books", err) + } + } else { + err = x.Where("title LIKE ?", "%" + searchterm + "%").Find(&books) + if err != nil { + fmt.Println("Error getting Books", err) + } } + // Get all authors and publishers for i, book := range books { diff --git a/routes/api/v1/books_list.go b/routes/api/v1/books_list.go index 8b7be8c..93419e2 100644 --- a/routes/api/v1/books_list.go +++ b/routes/api/v1/books_list.go @@ -9,7 +9,7 @@ import ( func BookList(c echo.Context) error { - list, err := models.ListBooks() + list, err := models.ListBooks("") if err != nil{ return c.JSON(http.StatusInternalServerError, models.Message{"Error getting books"}) diff --git a/routes/api/v1/books_search.go b/routes/api/v1/books_search.go new file mode 100644 index 0000000..2bc48bd --- /dev/null +++ b/routes/api/v1/books_search.go @@ -0,0 +1,25 @@ +package v1 + +import ( + "github.com/labstack/echo" + "net/http" + + "git.mowie.cc/konrad/Library/models" +) + +func BookSearch(c echo.Context) error { + + search := c.QueryParam("s") + + if search == "" { + return c.JSON(http.StatusBadRequest, models.Message{"Search cannot be empty."}) + } + + list, err := models.ListBooks(search) + + if err != nil{ + return c.JSON(http.StatusInternalServerError, models.Message{"Error getting books"}) + } + + return c.JSON(http.StatusOK, list) +} \ No newline at end of file diff --git a/routes/routes.go b/routes/routes.go index 400dfb7..1fe4505 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -29,6 +29,7 @@ func RegisterRoutes(e *echo.Echo) { // Lookup Books a.GET("/books/list", apiv1.BookList) a.GET("/books/:id", apiv1.BookShow) + a.GET("/books/search", apiv1.BookSearch) // Lookup Authors a.GET("/authors/list", apiv1.AuthorsList) @@ -66,24 +67,24 @@ func RegisterRoutes(e *echo.Echo) { /login - Einloggen /logout - ausloggen - /books/:id - Buch anzeigen + /books/:id - ✔ Buch anzeigen /books/:id/edit - |Buch bearbeiten (inkl mengen) /books/:id/delete - |Buch löschen /books/search?s=se - Suchen - /books/list - Auflisten - /books/add - |Hinzufügen + /books/list - ✔ Auflisten + /books/add - ✔ |Hinzufügen - /authors/:id - Autor anzeigen + /authors/:id - ✔ Autor anzeigen /authors/:id/edit - |Autor bearbeiten /authors/:id/delete - |Autor löschen (auch mit allem in books_author) - /authors/list - Autoren auflisten + /authors/list - ✔ Autoren auflisten /authors/search?s=d - Autoren suchen /authors/add - |Hinzufügen - /publishers/:id - Verlag anzeigen + /publishers/:id - ✔ Verlag anzeigen /publishers/:id/edit - |Verlag bearbeiten /publishers/:id/delete - |Verlag löschen (bei büchern Verlag auf 0 setzen) - /publishers/list - Verlage auflisten + /publishers/list - ✔ Verlage auflisten /publishers/search?s= - Verlage suchen /publishers/add - |Hinzufügen