Noch ein Bisschen aufgeräumt
This commit is contained in:
		
							
								
								
									
										26
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								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)) | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
| } | ||||
|   | ||||
| @@ -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) | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user