Browse Source

CRUD Kunde, Lieferant

master
Georg Spar 3 years ago
parent
commit
fc64e67a2a
  1. 206
      spargcom/senuma/database/database.go
  2. BIN
      spargcom/senuma/senuma.exe
  3. 233
      spargcom/senuma/senuma.go
  4. 6
      spargcom/senuma/senuma.log

206
spargcom/senuma/database/database.go

@ -13,6 +13,8 @@ var (
dbType = "mysql" dbType = "mysql"
) )
// Artikel
func CreateArtikel(art domain.Artikel) (resArt domain.Artikel, err error) { func CreateArtikel(art domain.Artikel) (resArt domain.Artikel, err error) {
conn, err := sql.Open(dbType, dbConnection) conn, err := sql.Open(dbType, dbConnection)
if err != nil { if err != nil {
@ -113,6 +115,210 @@ func UpdateArtikel(art domain.Artikel) (resArt domain.Artikel, err error) {
return resArt, err return resArt, err
} }
// Kunde
func CreateKunde(kd domain.Kunde) (resKd domain.Kunde, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("Verbindung hergestellt")
log.Println("Name = ", kd.Name)
defer conn.Close()
res, err := conn.Exec("INSERT INTO kunden VALUES(?,?,?)", kd.Id, kd.Name, kd.KdNrExt)
if err != nil {
log.Println("Error while executing insert statement", err)
}
lastId, err := res.LastInsertId()
kd.Id = uint(lastId)
resKd = kd
return resKd, err
}
func DeleteKunde(kdId uint) (result, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("DB Verbindung hergestellt")
defer conn.Close()
_, err = conn.Exec("DELETE FROM kunden WHERE id = ?", kdId)
if err != nil {
log.Fatal("Error while executing DELETE statement", err)
}
return result, err
}
func ShowKunde() (kdArray []domain.Kunde, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("DB Verbindung hergestellt")
defer conn.Close()
results, err := conn.Query("SELECT * FROM kunden")
if err != nil {
log.Fatal("Error while executing SELECt statement", err)
}
var kd domain.Kunde
for results.Next() {
err = results.Scan(&kd.Id, &kd.Name, &kd.KdNrExt)
if err != nil {
log.Fatal("Error: ", err)
}
kdArray = append(kdArray, kd)
}
return kdArray, err
}
func GetKunde(id uint) (kunde domain.Kunde, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("DB Verbindung hergestellt")
defer conn.Close()
results, err := conn.Query("SELECT * FROM kunden WHERE id=?", id)
if err != nil {
log.Fatal("Error while executing SELECt statement", err)
}
for results.Next() {
err = results.Scan(&kunde.Id, &kunde.Name, &kunde.KdNrExt)
if err != nil {
log.Fatal("Error: ", err)
}
}
return kunde, err
}
func UpdateKunde(ku domain.Kunde) (resKunde domain.Kunde, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("Verbindung hergestellt")
log.Println("Name = ", ku.Name)
defer conn.Close()
_, err = conn.Exec("UPDATE kunden SET name=?, kdnr_ext=? WHERE id=?", ku.Name, ku.KdNrExt, ku.Id)
if err != nil {
log.Println("Error while executing insert statement", err)
}
resKunde = ku
return resKunde, err
}
// Lieferanten
func CreateLieferant(lief domain.Lieferant) (resLief domain.Lieferant, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("Verbindung hergestellt")
log.Println("Name = ", lief.Name)
defer conn.Close()
res, err := conn.Exec("INSERT INTO lieferanten VALUES(?,?,?)", lief.Id, lief.Name, lief.LiefNrExt)
if err != nil {
log.Println("Error while executing insert statement", err)
}
lastId, err := res.LastInsertId()
lief.Id = uint(lastId)
resLief = lief
return resLief, err
}
func DeleteLieferant(liefId uint) (result, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("DB Verbindung hergestellt")
defer conn.Close()
_, err = conn.Exec("DELETE FROM lieferanten WHERE id = ?", liefId)
if err != nil {
log.Fatal("Error while executing DELETE statement", err)
}
return result, err
}
func ShowLieferant() (liefArray []domain.Lieferant, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("DB Verbindung hergestellt")
defer conn.Close()
results, err := conn.Query("SELECT * FROM lieferanten")
if err != nil {
log.Fatal("Error while executing SELECt statement", err)
}
var lief domain.Lieferant
for results.Next() {
err = results.Scan(&lief.Id, &lief.Name, &lief.LiefNrExt)
if err != nil {
log.Fatal("Error: ", err)
}
liefArray = append(liefArray, lief)
}
return liefArray, err
}
func GetLieferant(id uint) (lieferant domain.Lieferant, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("DB Verbindung hergestellt")
defer conn.Close()
results, err := conn.Query("SELECT * FROM lieferanten WHERE id=?", id)
if err != nil {
log.Fatal("Error while executing SELECt statement", err)
}
for results.Next() {
err = results.Scan(&lieferant.Id, &lieferant.Name, &lieferant.LiefNrExt)
if err != nil {
log.Fatal("Error: ", err)
}
}
return lieferant, err
}
func UpdateLieferant(lief domain.Lieferant) (resLief domain.Lieferant, err error) {
conn, err := sql.Open(dbType, dbConnection)
if err != nil {
log.Println("Error while connecting DB: ", err)
}
log.Println("Verbindung hergestellt")
log.Println("Name = ", lief.Name)
defer conn.Close()
_, err = conn.Exec("UPDATE lieferanten SET name=?, liefnr_ext=? WHERE id=?", lief.Name, lief.LiefNrExt, lief.Id)
if err != nil {
log.Println("Error while executing insert statement", err)
}
resLief = lief
return resLief, err
}
/*func CreateUser(us domain.User) (resUs domain.User, err error) { /*func CreateUser(us domain.User) (resUs domain.User, err error) {
conn, err := sql.Open(dbType, dbConnection) conn, err := sql.Open(dbType, dbConnection)
if err != nil { if err != nil {

BIN
spargcom/senuma/senuma.exe

Binary file not shown.

233
spargcom/senuma/senuma.go

@ -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) {

6
spargcom/senuma/senuma.log

@ -33,3 +33,9 @@ time="2021-05-28T23:48:34+02:00" level=info msg="updating Artikelfkgjkd"
time="2021-05-28T23:54:30+02:00" level=info msg="Bezeichnung = HP ProLine 405 G6" time="2021-05-28T23:54:30+02:00" level=info msg="Bezeichnung = HP ProLine 405 G6"
time="2021-05-28T23:54:30+02:00" level=info msg="externe Art-Nr = HPPL405G6" time="2021-05-28T23:54:30+02:00" level=info msg="externe Art-Nr = HPPL405G6"
time="2021-05-28T23:54:30+02:00" level=info msg="updating ArtikelHP ProLine 405 G6" time="2021-05-28T23:54:30+02:00" level=info msg="updating ArtikelHP ProLine 405 G6"
time="2021-05-29T00:05:23+02:00" level=info msg="Bezeichnung = fkgjkd_"
time="2021-05-29T00:05:23+02:00" level=info msg="externe Art-Nr = 4857def"
time="2021-05-29T00:05:23+02:00" level=info msg="updating Artikelfkgjkd_"
time="2021-05-29T21:02:42+02:00" level=info msg="Name = Walter Bau"
time="2021-05-29T21:02:42+02:00" level=info msg="externe Kd-Nr = 0"
time="2021-05-29T21:02:42+02:00" level=info msg="creating new KundeWalter Bau"

Loading…
Cancel
Save