implemented books search

Signed-off-by: kolaente <konrad@kola-entertainments.de>
This commit is contained in:
konrad 2017-10-10 21:40:14 +02:00 committed by kolaente
parent ce6c02a1cc
commit 38fdf9cbd8
4 changed files with 48 additions and 14 deletions

View File

@ -7,15 +7,23 @@ type BookPublisher struct {
Publisher `xorm:"extends"` Publisher `xorm:"extends"`
} }
func ListBooks() (books []*Book, err error) { func ListBooks(searchterm string) (books []*Book, err error) {
err = x.Table("books"). if searchterm == "" {
//Join("INNER", "publishers", "books.publisher = publishers.id"). err = x.Table("books").
Find(&books) //Join("INNER", "publishers", "books.publisher = publishers.id").
if err != nil { Find(&books)
fmt.Println("Error getting Books", err) 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 // Get all authors and publishers
for i, book := range books { for i, book := range books {

View File

@ -9,7 +9,7 @@ import (
func BookList(c echo.Context) error { func BookList(c echo.Context) error {
list, err := models.ListBooks() list, err := models.ListBooks("")
if err != nil{ if err != nil{
return c.JSON(http.StatusInternalServerError, models.Message{"Error getting books"}) return c.JSON(http.StatusInternalServerError, models.Message{"Error getting books"})

View File

@ -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)
}

View File

@ -29,6 +29,7 @@ func RegisterRoutes(e *echo.Echo) {
// Lookup Books // Lookup Books
a.GET("/books/list", apiv1.BookList) a.GET("/books/list", apiv1.BookList)
a.GET("/books/:id", apiv1.BookShow) a.GET("/books/:id", apiv1.BookShow)
a.GET("/books/search", apiv1.BookSearch)
// Lookup Authors // Lookup Authors
a.GET("/authors/list", apiv1.AuthorsList) a.GET("/authors/list", apiv1.AuthorsList)
@ -66,24 +67,24 @@ func RegisterRoutes(e *echo.Echo) {
/login - Einloggen /login - Einloggen
/logout - ausloggen /logout - ausloggen
/books/:id - Buch anzeigen /books/:id - Buch anzeigen
/books/:id/edit - |Buch bearbeiten (inkl mengen) /books/:id/edit - |Buch bearbeiten (inkl mengen)
/books/:id/delete - |Buch löschen /books/:id/delete - |Buch löschen
/books/search?s=se - Suchen /books/search?s=se - Suchen
/books/list - Auflisten /books/list - Auflisten
/books/add - |Hinzufügen /books/add - |Hinzufügen
/authors/:id - Autor anzeigen /authors/:id - Autor anzeigen
/authors/:id/edit - |Autor bearbeiten /authors/:id/edit - |Autor bearbeiten
/authors/:id/delete - |Autor löschen (auch mit allem in books_author) /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/search?s=d - Autoren suchen
/authors/add - |Hinzufügen /authors/add - |Hinzufügen
/publishers/:id - Verlag anzeigen /publishers/:id - Verlag anzeigen
/publishers/:id/edit - |Verlag bearbeiten /publishers/:id/edit - |Verlag bearbeiten
/publishers/:id/delete - |Verlag löschen (bei büchern Verlag auf 0 setzen) /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/search?s= - Verlage suchen
/publishers/add - |Hinzufügen /publishers/add - |Hinzufügen