|
|
@ -27,12 +27,27 @@ func main() { |
|
|
|
log.SetLevel(log.InfoLevel) |
|
|
|
log.SetLevel(log.InfoLevel) |
|
|
|
r := mux.NewRouter() |
|
|
|
r := mux.NewRouter() |
|
|
|
r.Use(CORS) |
|
|
|
r.Use(CORS) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Handler-Funktionscalls
|
|
|
|
|
|
|
|
|
|
|
|
r.HandleFunc("/api/artikel", createArtikelHandler).Methods("POST") |
|
|
|
r.HandleFunc("/api/artikel", createArtikelHandler).Methods("POST") |
|
|
|
r.HandleFunc("/api/artikel/{id:[0-9]+}", deleteArtikelHandler).Methods("DELETE") |
|
|
|
r.HandleFunc("/api/artikel/{id:[0-9]+}", deleteArtikelHandler).Methods("DELETE") |
|
|
|
r.HandleFunc("/api/artikel", showArtikelHandler).Methods("GET") |
|
|
|
r.HandleFunc("/api/artikel", showArtikelHandler).Methods("GET") |
|
|
|
r.HandleFunc("/api/artikel/{id:[0-9]+}", getArtikelHandler).Methods("GET") |
|
|
|
r.HandleFunc("/api/artikel/{id:[0-9]+}", getArtikelHandler).Methods("GET") |
|
|
|
r.HandleFunc("/api/artikel/{id:[0-9]+}", updateArtikelHandler).Methods("PUT") |
|
|
|
r.HandleFunc("/api/artikel/{id:[0-9]+}", updateArtikelHandler).Methods("PUT") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r.HandleFunc("/api/kunden", createKundeHandler).Methods("POST") |
|
|
|
|
|
|
|
r.HandleFunc("/api/kunden/{id:[0-9]+}", deleteKundeHandler).Methods("DELETE") |
|
|
|
|
|
|
|
r.HandleFunc("/api/kunden", showKundeHandler).Methods("GET") |
|
|
|
|
|
|
|
r.HandleFunc("/api/kunden/{id:[0-9]+}", getKundeHandler).Methods("GET") |
|
|
|
|
|
|
|
r.HandleFunc("/api/kunden/{id:[0-9]+}", updateKundeHandler).Methods("PUT") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r.HandleFunc("/api/lieferanten", createLieferantHandler).Methods("POST") |
|
|
|
|
|
|
|
r.HandleFunc("/api/lieferanten/{id:[0-9]+}", deleteLieferantHandler).Methods("DELETE") |
|
|
|
|
|
|
|
r.HandleFunc("/api/lieferanten", showLieferantHandler).Methods("GET") |
|
|
|
|
|
|
|
r.HandleFunc("/api/lieferanten/{id:[0-9]+}", getLieferantHandler).Methods("GET") |
|
|
|
|
|
|
|
r.HandleFunc("/api/lieferanten/{id:[0-9]+}", updateLieferantHandler).Methods("PUT") |
|
|
|
|
|
|
|
|
|
|
|
//r.HandleFunc("/groups", createGroupHandler).Methods("POST")
|
|
|
|
//r.HandleFunc("/groups", createGroupHandler).Methods("POST")
|
|
|
|
|
|
|
|
|
|
|
|
//r.HandleFunc("/users", createUserHandler).Methods("POST")
|
|
|
|
//r.HandleFunc("/users", createUserHandler).Methods("POST")
|
|
|
@ -46,6 +61,8 @@ func main() { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Artikel
|
|
|
|
|
|
|
|
|
|
|
|
func createArtikelHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
func createArtikelHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
|
|
|
|
body, err := ioutil.ReadAll(req.Body) |
|
|
|
body, err := ioutil.ReadAll(req.Body) |
|
|
@ -151,6 +168,222 @@ func updateArtikelHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
writer.Write(b) |
|
|
|
writer.Write(b) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Kunde
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func createKundeHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
body, err := ioutil.ReadAll(req.Body) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusBadRequest) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var kd domain.Kunde |
|
|
|
|
|
|
|
json.Unmarshal(body, &kd) |
|
|
|
|
|
|
|
log.Println("Name = ", kd.Name) |
|
|
|
|
|
|
|
log.Println("externe Kd-Nr = ", kd.KdNrExt) |
|
|
|
|
|
|
|
log.Info("creating new Kunde", kd.Name) |
|
|
|
|
|
|
|
res, err := database.CreateKunde(kd) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := fmt.Sprintf("%s/%d", req.URL.String(), res.Id) |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusCreated) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func deleteKundeHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
kundeId, _ := strconv.ParseUint(mux.Vars(req)["id"], 10, 64) |
|
|
|
|
|
|
|
log.Info("Deleting Kunde with ID", kundeId) |
|
|
|
|
|
|
|
_, err := database.DeleteKunde(uint(kundeId)) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: Delete could not be executed", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusNoContent) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func showKundeHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res, err := database.ShowKunde() |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: Kunde can't be shown ", err) |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := req.URL.String() |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusOK) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func getKundeHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
kundeId, _ := strconv.ParseUint(mux.Vars(req)["id"], 10, 64) |
|
|
|
|
|
|
|
res, err := database.GetKunde(kundeId) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: Kunde can't be shown ", err) |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := req.URL.String() |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusOK) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func updateKundeHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
body, err := ioutil.ReadAll(req.Body) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusBadRequest) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var kunde domain.Kunde |
|
|
|
|
|
|
|
json.Unmarshal(body, &kunde) |
|
|
|
|
|
|
|
log.Println("Name = ", kunde.Name) |
|
|
|
|
|
|
|
log.Println("externe Kd-Nr = ", kunde.KdNrExt) |
|
|
|
|
|
|
|
log.Info("updating Kunde", kunde.Name) |
|
|
|
|
|
|
|
res, err := database.UpdateKunde(kunde) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := fmt.Sprintf("%s/%d", req.URL.String(), res.Id) |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusOK) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Lieferanten
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func createLieferantHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
body, err := ioutil.ReadAll(req.Body) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusBadRequest) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var lief domain.Lieferant |
|
|
|
|
|
|
|
json.Unmarshal(body, &lief) |
|
|
|
|
|
|
|
log.Println("Name = ", lief.Name) |
|
|
|
|
|
|
|
log.Println("externe Lieferanten-Nr = ", lief.LiefNrExt) |
|
|
|
|
|
|
|
log.Info("creating new Lieferant", lief.Name) |
|
|
|
|
|
|
|
res, err := database.CreateLieferant(lief) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := fmt.Sprintf("%s/%d", req.URL.String(), res.Id) |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusCreated) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func deleteLieferantHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
lieferantId, _ := strconv.ParseUint(mux.Vars(req)["id"], 10, 64) |
|
|
|
|
|
|
|
log.Info("Deleting Kunde with ID", lieferantId) |
|
|
|
|
|
|
|
_, err := database.DeleteLieferant(uint(lieferantId)) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: Delete could not be executed", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusNoContent) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func showLieferantHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
res, err := database.ShowLieferant() |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: Lieferant can't be shown ", err) |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := req.URL.String() |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusOK) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func getLieferantHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
lieferId, _ := strconv.ParseUint(mux.Vars(req)["id"], 10, 64) |
|
|
|
|
|
|
|
res, err := database.GetLieferant(lieferId) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: Lieferant can't be shown ", err) |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := req.URL.String() |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusOK) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func updateLieferantHandler(writer http.ResponseWriter, req *http.Request) { |
|
|
|
|
|
|
|
body, err := ioutil.ReadAll(req.Body) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusBadRequest) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var lieferant domain.Lieferant |
|
|
|
|
|
|
|
json.Unmarshal(body, &lieferant) |
|
|
|
|
|
|
|
log.Println("Name = ", lieferant.Name) |
|
|
|
|
|
|
|
log.Println("externe Lieferanten-Nr = ", lieferant.LiefNrExt) |
|
|
|
|
|
|
|
log.Info("updating Lieferant", lieferant.Name) |
|
|
|
|
|
|
|
res, err := database.UpdateLieferant(lieferant) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusInternalServerError) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b, err := json.Marshal(res) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Fatal("Error: ", err) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
location := fmt.Sprintf("%s/%d", req.URL.String(), res.Id) |
|
|
|
|
|
|
|
writer.Header().Set("Location:", location) |
|
|
|
|
|
|
|
writer.Header().Set("Content-Type", "application/json") |
|
|
|
|
|
|
|
writer.WriteHeader(http.StatusOK) |
|
|
|
|
|
|
|
writer.Write(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// General
|
|
|
|
|
|
|
|
|
|
|
|
func CORS(next http.Handler) http.Handler { |
|
|
|
func CORS(next http.Handler) http.Handler { |
|
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
|
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
|
|
|
|
|
|
|
|
|
|
|