Erzeugung der Datenbank Reservations und Erzeugung der REST Methode für Abort

This commit is contained in:
Marco Kittel 2025-07-18 13:45:56 +02:00
parent e2697cee5b
commit 1f9fea0bb6
2 changed files with 34 additions and 1 deletions

View File

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

View File

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