initial commit
This commit is contained in:
59
cmd/list/main.go
Normal file
59
cmd/list/main.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"encoding/json"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
var (
|
||||
dbURL = flag.String("db", "julian:hi@/test", "The Database")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
db, err := sql.Open("mysql", *dbURL)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if err = readStudiengaenge(db); err != nil {
|
||||
log.Fatal("readStudiengaenge:", err)
|
||||
}
|
||||
|
||||
result, err := db.Query("SELECT Vorname, Nachname, Matrnr, Studiengang FROM Teilnehmer")
|
||||
if err != nil {
|
||||
log.Fatal("error fetching students:", err)
|
||||
}
|
||||
|
||||
var (
|
||||
stud Student
|
||||
ID int
|
||||
)
|
||||
|
||||
for result.Next() {
|
||||
if err = result.Scan(&stud.Vorname, &stud.Nachname, &stud.Matrnr, &ID); err != nil {
|
||||
log.Println("could not retrieve Student:", err)
|
||||
continue
|
||||
}
|
||||
|
||||
name, ok := studiengaenge[ID]
|
||||
if !ok {
|
||||
log.Println("illegal Studiengang:", ID)
|
||||
continue
|
||||
}
|
||||
|
||||
stud.Studiengang = name
|
||||
|
||||
out, err := json.Marshal(stud)
|
||||
if err != nil {
|
||||
log.Fatal("could not marshal to json:", err)
|
||||
}
|
||||
fmt.Println(string(out))
|
||||
}
|
||||
}
|
||||
17
cmd/list/studenten.go
Normal file
17
cmd/list/studenten.go
Normal file
@@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// Ein Student
|
||||
type Student struct {
|
||||
Vorname, Nachname string
|
||||
Matrnr int
|
||||
Studiengang Studiengang
|
||||
}
|
||||
|
||||
// Gibt den Studenten als String zurück
|
||||
func (s Student) String() string {
|
||||
return "{" + strconv.Itoa(s.Matrnr) + " " + s.Nachname + ", " + s.Vorname + " \"" + *s.Studiengang + "\"}"
|
||||
}
|
||||
32
cmd/list/studiengang.go
Normal file
32
cmd/list/studiengang.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package main
|
||||
|
||||
import "database/sql"
|
||||
|
||||
// Ein Studiengang
|
||||
type Studiengang *string
|
||||
|
||||
// globale Tabelle aller Studiengänge
|
||||
var studiengaenge map[int]Studiengang
|
||||
|
||||
// lese alle Studiengänge aus der mysql Tabelle
|
||||
func readStudiengaenge(db *sql.DB) error {
|
||||
studiengaenge = make(map[int]Studiengang)
|
||||
result, err := db.Query("SELECT ID, Studiengaenge.Name FROM Studiengaenge")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var (
|
||||
ID int
|
||||
stud string
|
||||
)
|
||||
|
||||
for result.Next() {
|
||||
if err = result.Scan(&ID, &stud); err != nil {
|
||||
return err
|
||||
}
|
||||
studiengaenge[ID] = Studiengang(&stud)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user