From 9e6bcb12beaeefe8e34ef842bd27acc706526b2f Mon Sep 17 00:00:00 2001 From: konrad Date: Mon, 9 Oct 2017 18:20:16 +0200 Subject: [PATCH] basic list Signed-off-by: kolaente --- main.go | 13 ++++++++++++- models/api/list.go | 10 ---------- models/books_list.go | 27 +++++++++++++++++++++++++++ models/models.go | 34 ++++++++++++++++++++++++++++++++++ routes/api/v1/books_list.go | 7 ++++++- 5 files changed, 79 insertions(+), 12 deletions(-) delete mode 100644 models/api/list.go create mode 100644 models/books_list.go create mode 100644 models/models.go diff --git a/main.go b/main.go index b47ebd1..8f57ff3 100644 --- a/main.go +++ b/main.go @@ -1,8 +1,19 @@ package main -import "git.mowie.cc/konrad/Library/routes" +import ( + "git.mowie.cc/konrad/Library/routes" + "git.mowie.cc/konrad/Library/models" + + "fmt" +) func main(){ + + err := models.SetEngine() + if err != nil { + fmt.Println(err) + } + e := routes.NewEcho() routes.RegisterRoutes(e) e.Start(":8082") diff --git a/models/api/list.go b/models/api/list.go deleted file mode 100644 index 97fcde0..0000000 --- a/models/api/list.go +++ /dev/null @@ -1,10 +0,0 @@ -package api - -import ( - "github.com/labstack/echo" - "net/http" -) - -func List(c echo.Context) error { - return c.String(http.StatusOK, "list") -} diff --git a/models/books_list.go b/models/books_list.go new file mode 100644 index 0000000..803ac66 --- /dev/null +++ b/models/books_list.go @@ -0,0 +1,27 @@ +package models + +import "fmt" + +type Book struct { + ID int64 `xorm:"int(11) autoincr not null unique pk"` + Title string `xorm:"varchar(250) not null"` + Isbn string `xorm:"varchar(30)"` + Year int64 `xorm:"int(11)"` + Price float64 `xorm:"double"` + Status int64 `xorm:"int(11)"` + Publisher int64 `xorm:"int(11)"` +} + +func (Book) TableName() string{ + return "books" +} + +func ListBooks() (books []*Book) { + + err := x.Find(&books) + if err != nil { + fmt.Println("Error getting Books", err) + } + + return books +} diff --git a/models/models.go b/models/models.go new file mode 100644 index 0000000..c987590 --- /dev/null +++ b/models/models.go @@ -0,0 +1,34 @@ +package models + +import ( + "github.com/go-xorm/core" + _ "github.com/go-sql-driver/mysql" + "github.com/go-xorm/xorm" + "fmt" +) + +var x *xorm.Engine + +func getEngine() (*xorm.Engine, error){ + connStr := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=true", + "root", "jup2000", "127.0.0.1", "library2") + return xorm.NewEngine("mysql", connStr) +} + + +// SetEngine sets the xorm.Engine +func SetEngine() (err error) { + x, err = getEngine() + if err != nil { + + return fmt.Errorf("Failed to connect to database: %v", err) + } + + x.SetMapper(core.GonicMapper{}) + + // Sync + x.Sync(&Book{}) + + x.ShowSQL(true) + return nil +} diff --git a/routes/api/v1/books_list.go b/routes/api/v1/books_list.go index 7bbce74..4111d9e 100644 --- a/routes/api/v1/books_list.go +++ b/routes/api/v1/books_list.go @@ -3,8 +3,13 @@ package v1 import ( "github.com/labstack/echo" "net/http" + + "git.mowie.cc/konrad/Library/models" ) func List(c echo.Context) error { - return c.String(http.StatusOK, "list") + + list := models.ListBooks() + + return c.JSON(http.StatusOK, list) } \ No newline at end of file