2017-10-09 16:20:16 +00:00
|
|
|
package models
|
|
|
|
|
|
|
|
import "fmt"
|
|
|
|
|
2017-11-08 09:55:17 +00:00
|
|
|
// BookPublisher struct to join books with publishers
|
2017-10-10 15:14:51 +00:00
|
|
|
type BookPublisher struct {
|
2017-11-07 15:35:10 +00:00
|
|
|
Book `xorm:"extends"`
|
2017-10-10 15:14:51 +00:00
|
|
|
Publisher `xorm:"extends"`
|
|
|
|
}
|
|
|
|
|
2017-11-08 09:55:17 +00:00
|
|
|
// ListBooks returns a list with all books, filtered by an optional searchstring
|
2017-10-10 19:40:14 +00:00
|
|
|
func ListBooks(searchterm string) (books []*Book, err error) {
|
2017-10-09 16:20:16 +00:00
|
|
|
|
2017-10-10 19:40:14 +00:00
|
|
|
if searchterm == "" {
|
|
|
|
err = x.Table("books").
|
2017-11-07 15:35:10 +00:00
|
|
|
//Join("INNER", "publishers", "books.publisher = publishers.id").
|
2017-10-10 19:40:14 +00:00
|
|
|
Find(&books)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Println("Error getting Books", err)
|
|
|
|
}
|
|
|
|
} else {
|
2017-11-07 15:35:10 +00:00
|
|
|
err = x.Where("title LIKE ?", "%"+searchterm+"%").Find(&books)
|
2017-10-10 19:40:14 +00:00
|
|
|
if err != nil {
|
|
|
|
fmt.Println("Error getting Books", err)
|
|
|
|
}
|
2017-10-09 16:20:16 +00:00
|
|
|
}
|
|
|
|
|
2017-11-17 10:40:43 +00:00
|
|
|
// Get all authors, publishers and quantities
|
2017-10-10 10:06:34 +00:00
|
|
|
for i, book := range books {
|
|
|
|
|
2017-11-17 10:40:43 +00:00
|
|
|
// Get quantities
|
2017-11-29 11:25:52 +00:00
|
|
|
books[i].Quantity, err = book.getQuantity()
|
2017-11-17 10:40:43 +00:00
|
|
|
if err != nil {
|
|
|
|
fmt.Println("Error getting quantity:", err)
|
|
|
|
}
|
|
|
|
|
2017-10-10 10:06:34 +00:00
|
|
|
// Get publisher
|
2017-11-28 09:43:23 +00:00
|
|
|
books[i].Publisher, _, err = GetPublisherByID(book.PublisherID)
|
2017-10-10 10:06:34 +00:00
|
|
|
if err != nil {
|
|
|
|
fmt.Println("Error getting publisher:", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Get all authors
|
2017-11-24 13:36:40 +00:00
|
|
|
books[i].Authors, err = GetAuthorsByBook(*book)
|
2017-10-10 10:06:34 +00:00
|
|
|
if err != nil {
|
|
|
|
fmt.Println("Error getting authors:", err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-10-09 16:29:09 +00:00
|
|
|
return books, err
|
2017-10-09 16:20:16 +00:00
|
|
|
}
|