first coomit

This commit is contained in:
2020-08-10 12:58:54 +08:00
commit 5c00a2534b
16 changed files with 307 additions and 0 deletions
+96
View File
@@ -0,0 +1,96 @@
package rest
import (
"encoding/hex"
"encoding/json"
"fmt"
"github.com/gorilla/mux"
"nbarest/lib/persistence"
"net/http"
"strings"
)
func NewPlayerServiceHandler(handler persistence.DatabaseHandler) *playerServiceHandler{
return &playerServiceHandler{
dbhandler: handler,
}
}
type playerServiceHandler struct{
dbhandler persistence.DatabaseHandler
}
func (ph *playerServiceHandler) FindPlayerHandler(w http.ResponseWriter,r *http.Request){
fmt.Println("FindPlayerHandler")
vars:=mux.Vars(r)
criteria,ok:=vars["SearchCriteria"]
if !ok{
w.WriteHeader(400)
fmt.Fprintln(w,"error")
return
}
searchkey,ok:=vars["search"]
if !ok{
w.WriteHeader(400)
fmt.Fprintln(w,"error")
return
}
var player persistence.Player
var err error
switch strings.ToLower(criteria) {
case "name":
player,err=ph.dbhandler.FindPlayerByName(searchkey)
case "id":
id,err:=hex.DecodeString(searchkey)
if err==nil{
player,err=ph.dbhandler.FindPlayer(id)
}
}
if err!=nil{
fmt.Fprintln(w,`{"error"} "%s"`,err)
return
}
fmt.Println("find"+searchkey)
w.Header().Set("Content-Type","application/json;charset=utf8")
json.NewEncoder(w).Encode(&player)
}
func (ph *playerServiceHandler) NewPlayerHandler(w http.ResponseWriter, r *http.Request){
fmt.Println("NewPlayerHandler")
player:= persistence.Player{}
err:=json.NewDecoder(r.Body).Decode(&player)
if err!=nil{
w.WriteHeader(500)
fmt.Fprintln(w,`{"error"}`)
return
}
id,err:=ph.dbhandler.AddPlayer(player)
if nil!=err{
w.WriteHeader(500)
fmt.Fprintln(w,`{"error"}`)
return
}
fmt.Fprint(w,`{"id":%d}`,id)
}
func (ph *playerServiceHandler) FindAllPlayerHandler(w http.ResponseWriter,r *http.Request){
fmt.Println("FindAllPlayerHandler")
players,err:= ph.dbhandler.FindAllAvailablePlayers()
if err!=nil{
w.WriteHeader(500)
fmt.Fprintln(w,`{"error"}`)
return
}
w.Header().Set("Content-Type", "application/json;charset=utf8")
err=json.NewEncoder(w).Encode(&players)
if err!=nil{
w.WriteHeader(500)
fmt.Fprintln(w,`{"error"}`)
}
}