From 19be8eb25392d735e2dd2bc04eddd25f8f1d3c4d Mon Sep 17 00:00:00 2001 From: Martin Geno Date: Thu, 30 Mar 2017 18:43:18 +0200 Subject: [PATCH] [TASK] add review to status api + and a first version of review api --- config_example.conf | 2 +- http/main.go | 3 ++- http/review.go | 18 ++++++++++++++++++ http/review_test.go | 25 +++++++++++++++++++++++++ http/status.go | 11 ++++++++--- http/status_test.go | 6 ++++-- 6 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 http/review.go create mode 100644 http/review_test.go diff --git a/config_example.conf b/config_example.conf index 7ea9664..ea14d94 100644 --- a/config_example.conf +++ b/config_example.conf @@ -1,7 +1,7 @@ webserver_bind = ":8080" [database] -type = "sqlite" +type = "sqlite3" connection = "file::memory:?mode=memory&cache=shared" # For Master-Slave cluster # read_connection = "" diff --git a/http/main.go b/http/main.go index d7d0eb0..c793174 100644 --- a/http/main.go +++ b/http/main.go @@ -6,5 +6,6 @@ import ( ) func BindAPI(router *goji.Mux) { - router.HandleFunc(pat.Get("/api/status"), statusHandler) + router.HandleFunc(pat.Get("/api/status"), status) + router.HandleFunc(pat.Get("/api/reviews"), listReview) } diff --git a/http/review.go b/http/review.go new file mode 100644 index 0000000..94ea9d5 --- /dev/null +++ b/http/review.go @@ -0,0 +1,18 @@ +package http + +import ( + "net/http" + + "github.com/genofire/hs_master-kss-monolith/lib/database" + lib "github.com/genofire/hs_master-kss-monolith/lib/http" + logger "github.com/genofire/hs_master-kss-monolith/lib/log" + "github.com/genofire/hs_master-kss-monolith/models" +) + +func listReview(w http.ResponseWriter, r *http.Request) { + log := logger.HTTP(r) + var list []*models.Review + database.Read.Find(&list) + lib.Write(w, list) + log.Info("done") +} diff --git a/http/review_test.go b/http/review_test.go new file mode 100644 index 0000000..dd64844 --- /dev/null +++ b/http/review_test.go @@ -0,0 +1,25 @@ +package http + +import ( + "net/http" + "testing" + + "github.com/genofire/hs_master-kss-monolith/lib/database" + + "github.com/genofire/hs_master-kss-monolith/test" +) + +func TestReview(t *testing.T) { + database.Open(database.Config{ + Type: "sqlite3", + Connection: ":memory:", + }) + database.Write.LogMode(true) + assertion, router := test.Init(t) + BindAPI(router) + session := test.NewSession(router) + + result, w := session.JSONRequest("GET", "/api/reviews", nil) + assertion.Equal(http.StatusOK, w.StatusCode) + assertion.Equal([]interface{}{}, result) +} diff --git a/http/status.go b/http/status.go index 0f1114d..6e89321 100644 --- a/http/status.go +++ b/http/status.go @@ -3,12 +3,17 @@ package http import ( "net/http" + "github.com/genofire/hs_master-kss-monolith/lib/database" lib "github.com/genofire/hs_master-kss-monolith/lib/http" logger "github.com/genofire/hs_master-kss-monolith/lib/log" + "github.com/genofire/hs_master-kss-monolith/models" ) -func statusHandler(w http.ResponseWriter, r *http.Request) { +func status(w http.ResponseWriter, r *http.Request) { log := logger.HTTP(r) - lib.Write(w, "running") - log.Info("show status") + var reviews []*models.Review + var count int64 + database.Read.Find(&reviews).Count(&count) + lib.Write(w, map[string]interface{}{"status": "running", "review_count": count}) + log.Info("done") } diff --git a/http/status_test.go b/http/status_test.go index ade4d13..01db01d 100644 --- a/http/status_test.go +++ b/http/status_test.go @@ -12,8 +12,10 @@ func TestStatus(t *testing.T) { BindAPI(router) session := test.NewSession(router) - result, w := session.JSONRequest("GET", "/api/status", nil) + r, w := session.JSONRequest("GET", "/api/status", nil) + result := r.(map[string]interface{}) assertion.Equal(http.StatusOK, w.StatusCode) - assertion.Equal("running", result) + assertion.Equal("running", result["status"]) + assertion.Equal(float64(0), result["review_count"]) }