diff --git a/data.go b/data.go index 97a1a68..1f289dc 100644 --- a/data.go +++ b/data.go @@ -1,5 +1,7 @@ package main +import "database/sql" + // struct für das Einbinden von Items, die gekauft wurden type Itemb struct { Id uint64 `json:"id"` @@ -12,6 +14,16 @@ type Itemb struct { Abmessungen Measure `json:"abmessungen"` } +// struct für die Datenbank-Abfrage, analog zu Itemb +type DbIb struct { + Bezeichnung sql.NullString + Kurzbeschreibung sql.NullString + Groesse sql.NullString + Farbe sql.NullString + Material sql.NullString + Abmessungen DbMea +} + // struct für die Fotos, die im Filesystem abgelegt werden sollen type Photos struct { Id uint64 `json:"id"` @@ -40,6 +52,19 @@ type Measure struct { TaillenumfangB float64 `json:"taillenumfangb"` } +// struct für die Datenbank-Abfrage, analog zu Measure +type DbMea struct { + Kurz sql.NullString + Brust sql.NullFloat64 + LaengeT sql.NullFloat64 + Schulterbreite sql.NullFloat64 + TaillenumfangT sql.NullFloat64 + Hueftumfang sql.NullFloat64 + Innennaht sql.NullFloat64 + LaengeB sql.NullFloat64 + TaillenumfangB sql.NullFloat64 +} + // struct für die Erweiterung des Items für die Benutzung // zusätzliche Felder für Bewertung und Favoriten type ItemExt struct { diff --git a/wdmdb.go b/wdmdb.go index 46004ba..6ac6029 100644 --- a/wdmdb.go +++ b/wdmdb.go @@ -348,18 +348,87 @@ func GetItemB(id uint64) (itemB Itemb, err error) { } log.Println("DB Verbindung hergestellt (ItemB SHOW)") defer conn.Close() + var dbItemb DbIb results, err := conn.Query("SELECT a.id, a.bezeichnung, a.kurzbeschreibung, a.groesse, a.farbe, a.material, b.id, b.brust, b.laenget, b.schulterbreite, b.taillenumfangt, b.hueftumfang, b.laengeb, b.taillenumfangb, b.kurz, c.id, c.bezeichnung FROM itemb a, measure b, typ c WHERE a.id=? AND b.id=a.abmessungenid AND a.typid=c.id", id) if err != nil { log.Fatal("Error while executing SELECt statement", err) } for results.Next() { - err = results.Scan(&itemB.Id, &itemB.Bezeichnung, &itemB.Kurzbeschreibung, &itemB.Groesse, &itemB.Farbe, &itemB.Material, + /* err = results.Scan(&itemB.Id, &itemB.Bezeichnung, &itemB.Kurzbeschreibung, &itemB.Groesse, &itemB.Farbe, &itemB.Material, &itemB.Abmessungen.Id, &itemB.Abmessungen.Brust, &itemB.Abmessungen.LaengeT, &itemB.Abmessungen.Schulterbreite, &itemB.Abmessungen.TaillenumfangT, &itemB.Abmessungen.Hueftumfang, &itemB.Abmessungen.LaengeB, &itemB.Abmessungen.TaillenumfangB, &itemB.Abmessungen.Kurz, &itemB.Type.Id, &itemB.Type.Bezeichnung) - + */ + err = results.Scan(&itemB.Id, &dbItemb.Bezeichnung, &dbItemb.Kurzbeschreibung, &dbItemb.Groesse, &dbItemb.Farbe, &dbItemb.Material, + &itemB.Abmessungen.Id, &dbItemb.Abmessungen.Brust, &dbItemb.Abmessungen.LaengeT, &dbItemb.Abmessungen.Schulterbreite, &dbItemb.Abmessungen.TaillenumfangT, &dbItemb.Abmessungen.Hueftumfang, + &dbItemb.Abmessungen.LaengeB, &dbItemb.Abmessungen.TaillenumfangB, &dbItemb.Abmessungen.Kurz, &itemB.Type.Id, &itemB.Type.Bezeichnung) if err != nil { log.Fatal("Error: ", err) } + if dbItemb.Bezeichnung.Valid { + itemB.Bezeichnung = dbItemb.Bezeichnung.String + } else { + itemB.Bezeichnung = "" + } + if dbItemb.Kurzbeschreibung.Valid { + itemB.Kurzbeschreibung = dbItemb.Kurzbeschreibung.String + } else { + itemB.Kurzbeschreibung = "" + } + if dbItemb.Groesse.Valid { + itemB.Groesse = dbItemb.Groesse.String + } else { + itemB.Groesse = "" + } + if dbItemb.Farbe.Valid { + itemB.Farbe = dbItemb.Farbe.String + } else { + itemB.Farbe = "" + } + if dbItemb.Material.Valid { + itemB.Material = dbItemb.Material.String + } else { + itemB.Material = "" + } + if dbItemb.Abmessungen.Brust.Valid { + itemB.Abmessungen.Brust = dbItemb.Abmessungen.Brust.Float64 + } else { + itemB.Abmessungen.Brust = 0 + } + if dbItemb.Abmessungen.LaengeT.Valid { + itemB.Abmessungen.LaengeT = dbItemb.Abmessungen.LaengeT.Float64 + } else { + itemB.Abmessungen.LaengeT = 0 + } + if dbItemb.Abmessungen.Schulterbreite.Valid { + itemB.Abmessungen.Schulterbreite = dbItemb.Abmessungen.Schulterbreite.Float64 + } else { + itemB.Abmessungen.Schulterbreite = 0 + } + if dbItemb.Abmessungen.TaillenumfangT.Valid { + itemB.Abmessungen.TaillenumfangT = dbItemb.Abmessungen.TaillenumfangT.Float64 + } else { + itemB.Abmessungen.TaillenumfangT = 0 + } + if dbItemb.Abmessungen.Hueftumfang.Valid { + itemB.Abmessungen.Hueftumfang = dbItemb.Abmessungen.Hueftumfang.Float64 + } else { + itemB.Abmessungen.Hueftumfang = 0 + } + if dbItemb.Abmessungen.LaengeB.Valid { + itemB.Abmessungen.LaengeB = dbItemb.Abmessungen.LaengeB.Float64 + } else { + itemB.Abmessungen.LaengeB = 0 + } + if dbItemb.Abmessungen.TaillenumfangB.Valid { + itemB.Abmessungen.TaillenumfangB = dbItemb.Abmessungen.TaillenumfangB.Float64 + } else { + itemB.Abmessungen.TaillenumfangB = 0 + } + if dbItemb.Abmessungen.Kurz.Valid { + itemB.Abmessungen.Kurz = dbItemb.Abmessungen.Kurz.String + } else { + itemB.Abmessungen.Kurz = "" + } } return itemB, err }