diff --git a/cmd/websrv/main.go b/cmd/websrv/main.go index a20e310..a6cf609 100644 --- a/cmd/websrv/main.go +++ b/cmd/websrv/main.go @@ -14,6 +14,11 @@ var ( port = ":8080" ) +type ( + //RegistrierungsID -> ProductID -> Product + ProductStore map[string]map[string]api.Product +) + const ( curlhelp = `curl -X POST localhost:8080/api/products -d '{ "products": { "A6053": 2, "B3009": 1200 }, "context": { "country": "EU", "state": "" } }'` ) @@ -36,6 +41,9 @@ func main() { http.HandleFunc("/api/products/release", func(w http.ResponseWriter, r *http.Request) { fmt.Println("In Arbeit: release") }) + http.HandleFunc("/api/products/abort", func(w http.ResponseWriter, r *http.Request) { + fmt.Println("In Arbeit: abort") + }) log.Printf("Easy Peasy: Die Party startet auf Port %s\n", port) log.Printf("Probiers mal damit: %s\n", curlhelp) diff --git a/internal/database/database.go b/internal/database/database.go index 1eabd85..52737b4 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -61,7 +61,6 @@ func (d *DatabaseWriter) createWarehouseTableIfNotExist() error { } func (d *DatabaseWriter) createDeliveryTableIfNotExist() error { - _, err := d.db.Exec(` CREATE TABLE IF NOT EXISTS deliverytimes ( id INT AUTO_INCREMENT PRIMARY KEY, @@ -75,6 +74,32 @@ func (d *DatabaseWriter) createDeliveryTableIfNotExist() error { return err } +// Die Idee ist, dass ich die Reservierungen via mit Verweisen auf die Primärschlüssel +// von deliverytimes und warehouseproducts verknüpfe. Ziel ist es, über den Status +// das Fetch Select SQL Statement für die Abfrage der Reservierungen zu erweitern um +// über die SUM Methode im SQL Query bei STATUS RESERVED, den reduzierten Mengenwert anzuzuzeigen +// für das Registrierte Produkt +func (d *DatabaseWriter) createReservationTableIfNotExist() error { + _, err := d.db.Exec(` + CREATE TABLE IF NOT EXISTS reservations ( + id CHAR(36) PRIMARY KEY, + deliveryId INT, + warehouseId INT, + amount INT DEFAULT 0, + status VARCHAR(30) CHECK(status IN ('RESERVED', 'CONFIRMED', 'ABORTED')), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT fk_delivery_id + FOREIGN KEY (deliveryId) REFERENCES deliverytimes (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + CONSTRAINT fk_warehouse_id + FOREIGN KEY (warehouseId) REFERENCES warehouseproducts (id) + ON DELETE CASCADE + ON UPDATE CASCADE + ) ENGINE=InnoDB;`) + return err +} + func NewDatabaseWriter(connectionString string) *DatabaseWriter { db := DatabaseWriter{log: logger.NewMarcoLogger()} sql, err := db.connectDB(connectionString)