From 5019432b24a30c330e82ac68298a7532e676a094 Mon Sep 17 00:00:00 2001 From: Jason Streifling Date: Thu, 19 Oct 2023 15:22:45 +0200 Subject: [PATCH] =?UTF-8?q?Noch=20ein=20Bisschen=20aufger=C3=A4umt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 26 +---------- packages/data/db.go | 98 +++++++++++++-------------------------- packages/server/server.go | 22 ++++----- 3 files changed, 46 insertions(+), 100 deletions(-) diff --git a/main.go b/main.go index 80be3a2..c7353e6 100644 --- a/main.go +++ b/main.go @@ -7,39 +7,17 @@ import ( "streifling.com/jason/sicherheitsunterweisung/packages/data" "streifling.com/jason/sicherheitsunterweisung/packages/server" - "streifling.com/jason/sicherheitsunterweisung/packages/types" ) -// func waitForParticipants(sb []*types.Briefing, sp []*types.Participant, cp <-chan *types.Participant, m *http.ServeMux) { -// for p := range cp { -// sg := make([]*types.GivenAnswer, 4) -// -// p.Questions = data.InitQuestions() -// sp = append(sp, p) -// -// var i int -// for i = range p.Questions { -// m.HandleFunc("/display-question-"+fmt.Sprintf("%d", p.ID)+"-"+fmt.Sprintf("%d", i)+"/", server.DisplayQuestion(i, p)) -// } -// m.HandleFunc("/display-question-"+fmt.Sprintf("%d", p.ID)+"-"+fmt.Sprintf("%d", i+1)+"/", server.DisplayTestResults(sb, p)) -// } -// } - func main() { logins := make([]string, 0) - // participants := make([]*types.Participant, 0) - briefings := make([]*types.Briefing, 0) - mux := http.NewServeMux() db, err := data.OpenDB("sicherheitsunterweisung") if err != nil { log.Fatalln(err) } - // participantChan := make(chan *types.Participant) - // defer close(participantChan) - // go waitForParticipants(briefings, participants, participantChan, mux) - + mux := http.NewServeMux() mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static/")))) mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { template.Must(template.ParseFiles("templates/index.html", "templates/login.html")).Execute(w, nil) @@ -47,7 +25,7 @@ func main() { mux.HandleFunc("/search/", server.DisplaySearchResults(db)) mux.HandleFunc("/new-briefing/", server.DisplayInstructorForm()) mux.HandleFunc("/add-participant/", server.AddParticipant(&logins)) - mux.HandleFunc("/submit-form/", server.SubmitBriefingForm(&briefings)) + mux.HandleFunc("/submit-form/", server.SubmitBriefingForm(db, &logins)) mux.HandleFunc("/internal-login/", server.DisplayTable(db)) mux.HandleFunc("/external-login/", server.DisplayParticipantForm(&logins)) diff --git a/packages/data/db.go b/packages/data/db.go index 0303a4b..c8f876a 100644 --- a/packages/data/db.go +++ b/packages/data/db.go @@ -60,12 +60,6 @@ func getCredentials() (string, string, error) { return user, pass, nil } -func reverseOrder(bs []*types.Briefing) { - for i, j := 0, len(bs)-1; i < j; i, j = i+1, j-1 { - bs[i], bs[j] = bs[j], bs[i] - } -} - func OpenDB(dbName string) (*DB, error) { var err error db := new(DB) @@ -89,7 +83,7 @@ func OpenDB(dbName string) (*DB, error) { return db, nil } -func (db *DB) writeBriefing(b *types.Briefing) error { +func (db *DB) WriteBriefing(b *types.Briefing) error { result, err := db.Exec(` INSERT INTO briefings (date, time, location, document_name, as_of, instructor_id) @@ -100,7 +94,7 @@ func (db *DB) writeBriefing(b *types.Briefing) error { return fmt.Errorf("*DB.writeBriefing: db.Exec(): %v\n", err) } - _, err = result.LastInsertId() + b.ID, err = result.LastInsertId() if err != nil { return fmt.Errorf("*DB.writeBriefing: result.LastInsertId(): %v\n", err) } @@ -108,61 +102,54 @@ func (db *DB) writeBriefing(b *types.Briefing) error { return nil } -func (db *DB) writeParticipants(sp *[]*types.Participant) error { - for _, p := range *sp { - result, err := db.Exec(` - INSERT INTO participants - (first_name, last_name, company) - VALUES - (?, ?, ?) - `, p.FirstName, p.LastName, p.Company) - if err != nil { - return fmt.Errorf("*DB.writeParticipants: db.Exec(): %v\n", err) - } +func (db *DB) WriteParticipant(p *types.Participant) error { + result, err := db.Exec(` + INSERT INTO participants + (first_name, last_name, company) + VALUES + (?, ?, ?) + `, p.FirstName, p.LastName, p.Company) + if err != nil { + return fmt.Errorf("*DB.writeParticipants: db.Exec(): %v\n", err) + } - _, err = result.LastInsertId() - if err != nil { - return fmt.Errorf("*DB.writeParticipants: result.LastInsertId(): %v\n", err) - } + p.ID, err = result.LastInsertId() + if err != nil { + return fmt.Errorf("*DB.writeParticipants: result.LastInsertId(): %v\n", err) } return nil } -func (db *DB) writeGivenAnswers(b *types.Briefing, sp *[]*types.Participant, sq *[]*types.Question, sg *[]*types.GivenAnswer) error { - for _, p := range *sp { - for i, q := range *sq { - result, err := db.Exec(` - INSERT INTO given_answers - (briefing_id, participant_id, question_id, given_answer) - VALUES - (?, ?, ?, ?) - `, b.ID, p.ID, q.ID, (*sg)[i]) - if err != nil { - return fmt.Errorf("*DB.writeGivenAnswers: db.Exec(): %v\n", err) - } - - _, err = result.LastInsertId() - if err != nil { - return fmt.Errorf("*DB.writeGivenAnswers: result.LastInsertId(): %v\n", err) - } - } +func (db *DB) WriteGivenAnswer(b *types.Briefing, p *types.Participant, q *types.Question, g *types.GivenAnswer) error { + _, err := db.Exec(` + INSERT INTO given_answers + (briefing_id, participant_id, question_id, given_answer) + VALUES + (?, ?, ?, ?) + `, b.ID, p.ID, q.ID, g) + if err != nil { + return fmt.Errorf("*DB.writeGivenAnswers: db.Exec(): %v\n", err) } return nil } func (db *DB) WriteAllDataOfBriefing(b *types.Briefing, sp *[]*types.Participant, sq *[]*types.Question, sg *[]*types.GivenAnswer) error { - if err := db.writeBriefing(b); err != nil { + if err := db.WriteBriefing(b); err != nil { return fmt.Errorf("*DB.WriteAllDataOfBriefing: db.writeBriefing(): %v\n", err) } - if err := db.writeParticipants(sp); err != nil { - return fmt.Errorf("*DB.WriteAllDataOfBriefing: db.writeParticipants(): %v\n", err) + for _, p := range *sp { + if err := db.WriteParticipant(p); err != nil { + return fmt.Errorf("*DB.WriteAllDataOfBriefing: db.writeParticipants(): %v\n", err) + } } - if err := db.writeGivenAnswers(b, sp, sq, sg); err != nil { - return fmt.Errorf("*DB.WriteAllDataOfBriefing: db.writeGivenAnswers(): %v\n", err) + for _, p := range *sp { + for i, q := range *sq { + db.WriteGivenAnswer(b, p, q, (*sg)[i]) + } } return nil @@ -320,22 +307,3 @@ func (db *DB) GetInstructors() (*[]*types.Instructor, error) { return &instructors, nil } - -func (db *DB) WriteParticipant(p *types.Participant) error { - result, err := db.Exec(` - INSERT INTO participants - (first_name, last_name, company) - VALUES - (?, ?, ?) - `, p.FirstName, p.LastName, p.Company) - if err != nil { - return fmt.Errorf("*DB.writeParticipant: db.Exec(): %v\n", err) - } - - p.ID, err = result.LastInsertId() - if err != nil { - return fmt.Errorf("*DB.writeParticipant: result.LastInsertId(): %v\n", err) - } - - return nil -} diff --git a/packages/server/server.go b/packages/server/server.go index cbcc33f..f8735ab 100644 --- a/packages/server/server.go +++ b/packages/server/server.go @@ -7,19 +7,18 @@ import ( "html/template" "net/http" "strconv" - "strings" "time" "streifling.com/jason/sicherheitsunterweisung/packages/data" "streifling.com/jason/sicherheitsunterweisung/packages/types" ) -type questionData struct { - ID int64 - Q types.Question - I int - J int -} +// type questionData struct { +// ID int64 +// Q types.Question +// I int +// J int +// } func DisplayTable(db *data.DB) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { @@ -48,7 +47,7 @@ func DisplayInstructorForm() http.HandlerFunc { } func generateUUID() (string, error) { - bs := make([]byte, 2) + bs := make([]byte, 4) if _, err := rand.Read(bs); err != nil { return "", fmt.Errorf("GenerateUUID: rand.Read(bs): %v\n", err) @@ -71,7 +70,7 @@ func AddParticipant(sl *[]string) http.HandlerFunc { // TODO: Hier weiter machen, irgendwie die b.ID herausgeben, // am besten hier auch die p.IDs rausgeben, damit diese später verknüpft werden können -func SubmitBriefingForm(sb *[]*types.Briefing) http.HandlerFunc { +func SubmitBriefingForm(db *data.DB, sl *[]string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { now := time.Now() briefing := new(types.Briefing) @@ -86,7 +85,8 @@ func SubmitBriefingForm(sb *[]*types.Briefing) http.HandlerFunc { briefing.DocumentName = r.PostFormValue("document") // TODO: in HTML einfügen briefing.AsOf = r.PostFormValue("state") // TODO: Umbenennen // briefing.InstructorID = r.PostFormValue("instructor-id") // TODO: aus Dropdown holen - (*sb) = append(*sb, briefing) + + db.WriteBriefing(briefing) } } @@ -105,7 +105,7 @@ func newParticipant(l string) (*types.Participant, error) { var err error p := new(types.Participant) - p.ID, err = strconv.ParseInt(strings.Split(l, "-")[0], 10, 64) + p.ID, err = strconv.ParseInt(l, 10, 64) if err != nil { return nil, fmt.Errorf("newParticipant: strconv.Atoi(idString): %v\n", err) }