Aufräumaktion
This commit is contained in:
parent
886550318f
commit
3ac88bb796
@ -2,9 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
@ -12,7 +10,6 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
|
||||||
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/api"
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/api"
|
||||||
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/database"
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/database"
|
||||||
)
|
)
|
||||||
@ -65,133 +62,12 @@ func main() {
|
|||||||
fmt.Println("Connectionstring fehlt!. Bsp.: <user>:<passwort>@tcp(127.0.0.1:3306)/elio?parseTime=true")
|
fmt.Println("Connectionstring fehlt!. Bsp.: <user>:<passwort>@tcp(127.0.0.1:3306)/elio?parseTime=true")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//Dependency Injection
|
|
||||||
http.HandleFunc("/api/products", api.GetProductApiHandleFunc(nps))
|
http.HandleFunc("/api/products", api.GetProductApiHandleFunc(nps))
|
||||||
|
http.HandleFunc("/api/products/reserve", api.GetProductReservationApiHandleFunc(nps))
|
||||||
//Todo schöner machen
|
http.HandleFunc("/api/products/confirm", api.GetConfirmReservationApiHandleFunc(nps))
|
||||||
http.HandleFunc("/api/products/reserve", func(w http.ResponseWriter, r *http.Request) {
|
http.HandleFunc("/api/products/release", api.GetReleaseReservationApiHandleFunc(nps))
|
||||||
if r.Method != "POST" {
|
http.HandleFunc("/api/products/abort", api.GetAbortApiHandleFunc(nps))
|
||||||
return
|
|
||||||
}
|
|
||||||
defer r.Body.Close()
|
|
||||||
data, err := io.ReadAll(r.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var payload database.Container
|
|
||||||
err = json.Unmarshal(data, &payload)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Could not parse Json: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
groupId := uuid.New().String()
|
|
||||||
result, err := nps.FetchReservationData(&payload, database.UUID(groupId))
|
|
||||||
if err != nil {
|
|
||||||
//Todo Fehlerhandling
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
if len(result) == 0 {
|
|
||||||
w.WriteHeader(http.StatusNoContent)
|
|
||||||
fmt.Fprintln(w)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
_, err = nps.ReserviereBestellungen(result, database.UUID(groupId))
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
jsonResult, err := json.Marshal(result[0])
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
|
||||||
w.WriteHeader(http.StatusOK)
|
|
||||||
fmt.Fprintln(w, string(jsonResult))
|
|
||||||
})
|
|
||||||
|
|
||||||
http.HandleFunc("/api/products/confirm", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
if r.Method != "POST" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer r.Body.Close()
|
|
||||||
data, err := io.ReadAll(r.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
payload := struct {
|
|
||||||
Id string `json:"id"`
|
|
||||||
}{}
|
|
||||||
err = json.Unmarshal(data, &payload)
|
|
||||||
if err != nil {
|
|
||||||
//Todo Fehlerhandling
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
err = nps.ConfirmBestellung(database.UUID(payload.Id))
|
|
||||||
if err != nil {
|
|
||||||
//Todo Fehlerhandling
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
w.WriteHeader(http.StatusNoContent)
|
|
||||||
fmt.Fprintln(w)
|
|
||||||
return
|
|
||||||
})
|
|
||||||
|
|
||||||
http.HandleFunc("/api/products/release", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
if r.Method != "POST" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer r.Body.Close()
|
|
||||||
data, err := io.ReadAll(r.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
payload := struct {
|
|
||||||
Id string `json:"id"`
|
|
||||||
}{}
|
|
||||||
err = json.Unmarshal(data, &payload)
|
|
||||||
if err != nil {
|
|
||||||
//Todo Fehlerhandling
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
err = nps.ReleaseBestellung(database.UUID(payload.Id))
|
|
||||||
if err != nil {
|
|
||||||
//Todo Fehlerhandling
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
w.WriteHeader(http.StatusNoContent)
|
|
||||||
fmt.Fprintln(w)
|
|
||||||
return
|
|
||||||
})
|
|
||||||
|
|
||||||
http.HandleFunc("/api/products/abort", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
if r.Method != "POST" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer r.Body.Close()
|
|
||||||
data, err := io.ReadAll(r.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Println(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
payload := struct {
|
|
||||||
Id string `json:"id"`
|
|
||||||
}{}
|
|
||||||
err = json.Unmarshal(data, &payload)
|
|
||||||
if err != nil {
|
|
||||||
//Todo Fehlerhandling
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
err = nps.AbortBestellung(database.UUID(payload.Id))
|
|
||||||
if err != nil {
|
|
||||||
//Todo Fehlerhandling
|
|
||||||
log.Println(err)
|
|
||||||
}
|
|
||||||
w.WriteHeader(http.StatusNoContent)
|
|
||||||
fmt.Fprintln(w)
|
|
||||||
return
|
|
||||||
})
|
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
log.Printf("Easy Peasy: Die Party startet auf Port %s\n", port)
|
log.Printf("Easy Peasy: Die Party startet auf Port %s\n", port)
|
||||||
|
|||||||
@ -2,50 +2,9 @@
|
|||||||
CREATE DATABASE IF NOT EXISTS elio_test;
|
CREATE DATABASE IF NOT EXISTS elio_test;
|
||||||
CREATE DATABASE IF NOT EXISTS elio;
|
CREATE DATABASE IF NOT EXISTS elio;
|
||||||
|
|
||||||
|
|
||||||
-- -- Haupttabellen erzeugen
|
|
||||||
-- CREATE TABLE IF NOT EXISTS elio.warehouseproducts (
|
|
||||||
-- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
-- warehouse char(2) NOT NULL,
|
|
||||||
-- productid VARCHAR(20) NOT NULL,
|
|
||||||
-- amount INT DEFAULT 0,
|
|
||||||
-- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
-- CONSTRAINT location_product_must_be_one UNIQUE (warehouse, productid)
|
|
||||||
-- ) ENGINE=InnoDB;
|
|
||||||
|
|
||||||
-- CREATE TABLE IF NOT EXISTS elio.deliverytimes (
|
|
||||||
-- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
-- fromcountry varchar(4) NOT NULL,
|
|
||||||
-- tocountry varchar(4) NOT NULL,
|
|
||||||
-- state varchar(4) NULL,
|
|
||||||
-- delivery INT DEFAULT 0,
|
|
||||||
-- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
-- CONSTRAINT delivery_from_to_country_must_be_one UNIQUE (fromcountry, tocountry)
|
|
||||||
-- ) ENGINE=InnoDB;
|
|
||||||
|
|
||||||
-- -- Testtabellen erzeugen
|
|
||||||
-- CREATE TABLE IF NOT EXISTS elio_test.warehouseproducts (
|
|
||||||
-- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
-- warehouse char(2) NOT NULL,
|
|
||||||
-- productid VARCHAR(20) NOT NULL,
|
|
||||||
-- amount INT DEFAULT 0,
|
|
||||||
-- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
-- CONSTRAINT location_product_must_be_one UNIQUE (warehouse, productid)
|
|
||||||
-- ) ENGINE=InnoDB;
|
|
||||||
|
|
||||||
-- CREATE TABLE IF NOT EXISTS elio_test.deliverytimes (
|
|
||||||
-- id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
-- fromcountry varchar(4) NOT NULL,
|
|
||||||
-- tocountry varchar(4) NOT NULL,
|
|
||||||
-- state varchar(4) NULL,
|
|
||||||
-- delivery INT DEFAULT 0,
|
|
||||||
-- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
||||||
-- CONSTRAINT delivery_from_to_country_must_be_one UNIQUE (fromcountry, tocountry)
|
|
||||||
-- ) ENGINE=InnoDB;
|
|
||||||
|
|
||||||
-- Userkram
|
|
||||||
CREATE USER IF NOT EXISTS 'elio'@'%' IDENTIFIED BY 'eliogeheim';
|
CREATE USER IF NOT EXISTS 'elio'@'%' IDENTIFIED BY 'eliogeheim';
|
||||||
CREATE USER IF NOT EXISTS 'elio_test'@'%' IDENTIFIED BY 'eliogeheim';
|
CREATE USER IF NOT EXISTS 'elio_test'@'%' IDENTIFIED BY 'eliogeheim';
|
||||||
|
|
||||||
GRANT ALL PRIVILEGES ON elio.* TO 'elio'@'%';
|
GRANT ALL PRIVILEGES ON elio.* TO 'elio'@'%';
|
||||||
GRANT ALL PRIVILEGES ON elio_test.* TO 'elio_test'@'%';
|
GRANT ALL PRIVILEGES ON elio_test.* TO 'elio_test'@'%';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|||||||
41
internal/api/abortproducts.go
Normal file
41
internal/api/abortproducts.go
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/database"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetAbortApiHandleFunc(nps *database.ProductService) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method != "POST" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer r.Body.Close()
|
||||||
|
data, err := io.ReadAll(r.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
payload := struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
}{}
|
||||||
|
err = json.Unmarshal(data, &payload)
|
||||||
|
if err != nil {
|
||||||
|
//Todo Fehlerhandling
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
err = nps.AbortBestellung(database.UUID(payload.Id))
|
||||||
|
if err != nil {
|
||||||
|
//Todo Fehlerhandling
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
w.WriteHeader(http.StatusNoContent)
|
||||||
|
fmt.Fprintln(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
41
internal/api/confirmproducts.go
Normal file
41
internal/api/confirmproducts.go
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/database"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetConfirmReservationApiHandleFunc(nps *database.ProductService) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method != "POST" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer r.Body.Close()
|
||||||
|
data, err := io.ReadAll(r.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
payload := struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
}{}
|
||||||
|
err = json.Unmarshal(data, &payload)
|
||||||
|
if err != nil {
|
||||||
|
//Todo Fehlerhandling
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
err = nps.ConfirmBestellung(database.UUID(payload.Id))
|
||||||
|
if err != nil {
|
||||||
|
//Todo Fehlerhandling
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
w.WriteHeader(http.StatusNoContent)
|
||||||
|
fmt.Fprintln(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
41
internal/api/releaseproducts.go
Normal file
41
internal/api/releaseproducts.go
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/database"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetReleaseReservationApiHandleFunc(nps *database.ProductService) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method != "POST" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer r.Body.Close()
|
||||||
|
data, err := io.ReadAll(r.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
payload := struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
}{}
|
||||||
|
err = json.Unmarshal(data, &payload)
|
||||||
|
if err != nil {
|
||||||
|
//Todo Fehlerhandling
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
err = nps.ReleaseBestellung(database.UUID(payload.Id))
|
||||||
|
if err != nil {
|
||||||
|
//Todo Fehlerhandling
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
w.WriteHeader(http.StatusNoContent)
|
||||||
|
fmt.Fprintln(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
54
internal/api/reserveproducts.go
Normal file
54
internal/api/reserveproducts.go
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/google/uuid"
|
||||||
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/database"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetProductReservationApiHandleFunc(nps *database.ProductService) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method != "POST" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer r.Body.Close()
|
||||||
|
data, err := io.ReadAll(r.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var payload database.Container
|
||||||
|
err = json.Unmarshal(data, &payload)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Could not parse Json: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
groupId := uuid.New().String()
|
||||||
|
result, err := nps.FetchReservationData(&payload, database.UUID(groupId))
|
||||||
|
if err != nil {
|
||||||
|
//Todo Fehlerhandling
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
if len(result) == 0 {
|
||||||
|
w.WriteHeader(http.StatusNoContent)
|
||||||
|
fmt.Fprintln(w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = nps.ReserviereBestellungen(result, database.UUID(groupId))
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
jsonResult, err := json.Marshal(result[0])
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
fmt.Fprintln(w, string(jsonResult))
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user