initial commit

This commit is contained in:
2017-03-08 20:15:10 +01:00
commit 43c5ef6548
7 changed files with 458 additions and 0 deletions

59
cmd/list/main.go Normal file
View 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
View 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
View 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
}