Erweiterungen an der Dokumentation

This commit is contained in:
SourceFellows 2020-10-23 16:15:43 +02:00
parent d810dc50b4
commit 36ff7c539c
8 changed files with 29 additions and 11 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
mongo-db/* mongo-db/*
registrierung/main

View File

@ -41,3 +41,4 @@ Testen kann man die Anwendung entweder über den [Browser](https://localhost:844
Erreichbar ist die Anwendung über https://localhost:8443/registrierung. Erreichbar ist die Anwendung über https://localhost:8443/registrierung.
Möchten Sie in die MongoDB schauen was gespeichert wurde, erreichen Sie diese unter http://localhost:8081. Möchten Sie in die MongoDB schauen was gespeichert wurde, erreichen Sie diese unter http://localhost:8081.
Die Prometheus-Metriken können unter http://localhost:9090/metrics abgerufen werden.

View File

@ -5,6 +5,7 @@ services:
build: registrierung build: registrierung
ports: ports:
- "8443:8443" - "8443:8443"
- "9900:9900"
vorbereitung: vorbereitung:
image: training-fellow/vorbereitung image: training-fellow/vorbereitung
build: vorbereitung build: vorbereitung

View File

@ -62,7 +62,7 @@ func NewRegistrationHandler(ser *registrierung.RegistrierungsService) gin.Handle
func NewUnconfirmedListHandler(ser *registrierung.RegistrierungsService) gin.HandlerFunc { func NewUnconfirmedListHandler(ser *registrierung.RegistrierungsService) gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
registrations, err := ser.GetUnconfirmedRegistrierung() registrations, err := ser.GetUnconfirmedRegistrierungen()
if err != nil { if err != nil {
log.Errorf("Could not find unconfirmed registrations: %v", err) log.Errorf("Could not find unconfirmed registrations: %v", err)
c.Writer.WriteHeader(http.StatusInternalServerError) c.Writer.WriteHeader(http.StatusInternalServerError)

View File

@ -12,6 +12,7 @@ import (
"training-fellow.de/registrierung" "training-fellow.de/registrierung"
) )
//NewRepo erzeugt ein neues RegistrierungsRepository für MongoDB
func NewRepo(url, database, collection string) registrierung.RegistrierungsRepository { func NewRepo(url, database, collection string) registrierung.RegistrierungsRepository {
return &mongoDBRepositoy{url, collection, database} return &mongoDBRepositoy{url, collection, database}
} }
@ -24,6 +25,7 @@ type mongoDBRepositoy struct {
type mongoCall func(*mongo.Collection) error type mongoCall func(*mongo.Collection) error
//SaveRegistrierung speichert die übergebene Registrierung
func (m *mongoDBRepositoy) SaveRegistrierung(registrierung *registrierung.Registrierung) error { func (m *mongoDBRepositoy) SaveRegistrierung(registrierung *registrierung.Registrierung) error {
fmt.Println("Save") fmt.Println("Save")
@ -38,7 +40,8 @@ func (m *mongoDBRepositoy) SaveRegistrierung(registrierung *registrierung.Regist
} }
func (m *mongoDBRepositoy) GetUnconfirmedRegistrierung() ([]*registrierung.Registrierung, error) { //GetUnconfirmedRegistrierungen lieferte eine Liste aller bestätigter Registrierungen
func (m *mongoDBRepositoy) GetUnconfirmedRegistrierungen() ([]*registrierung.Registrierung, error) {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel() defer cancel()
@ -60,19 +63,21 @@ func (m *mongoDBRepositoy) GetUnconfirmedRegistrierung() ([]*registrierung.Regis
return registrations, err return registrations, err
} }
func (m *mongoDBRepositoy) ConfirmedRegistrierung(registrierungsId string) (*registrierung.Registrierung, error) { //ConfirmedRegistrierung bestätigt eine Registrierung
func (m *mongoDBRepositoy) ConfirmedRegistrierung(registrierungsID string) (*registrierung.Registrierung, error) {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel() defer cancel()
registrierung := &registrierung.Registrierung{} registrierung := &registrierung.Registrierung{}
err := m.executeInClient(ctx, func(collection *mongo.Collection) error { err := m.executeInClient(ctx, func(collection *mongo.Collection) error {
result := collection.FindOneAndUpdate(ctx, result := collection.FindOneAndUpdate(ctx,
bson.M{"_id": registrierungsId}, bson.M{"_id": registrierungsID},
bson.M{"$set": bson.M{"confirmed": true}}) bson.M{"$set": bson.M{"confirmed": true}})
return result.Decode(&registrierung) return result.Decode(&registrierung)
}) })
return registrierung, err return registrierung, err
} }
//Template Funktion zum Ausführen von MongoDB Aufrufen
func (m *mongoDBRepositoy) executeInClient(ctx context.Context, callback mongoCall) error { func (m *mongoDBRepositoy) executeInClient(ctx context.Context, callback mongoCall) error {
client, err := mongo.NewClient( client, err := mongo.NewClient(
options.Client(). options.Client().

View File

@ -7,7 +7,8 @@ import (
"training-fellow.de/registrierung" "training-fellow.de/registrierung"
) )
func NewNotifier(url string) *notifier { //NewNotifier erzeugt eine neue Instanz eines RegistrierungsNotifier für die Kommunikation mit NATS
func NewNotifier(url string) registrierung.RegistrierungsNotifier {
return &notifier{url} return &notifier{url}
} }
@ -15,6 +16,7 @@ type notifier struct {
url string url string
} }
//InformAboutNewRegistrierung informiert über eine neue Registrierung
func (nn *notifier) InformAboutNewRegistrierung(registrierung *registrierung.Registrierung) error { func (nn *notifier) InformAboutNewRegistrierung(registrierung *registrierung.Registrierung) error {
notifierLogger := log.WithField("Registrierung", registrierung) notifierLogger := log.WithField("Registrierung", registrierung)

View File

@ -1,7 +1,11 @@
package registrierung package registrierung
//RegistrierungsRepository verwaltet alle Registrierungen
type RegistrierungsRepository interface { type RegistrierungsRepository interface {
//SaveRegistrierung speichert eine Registrierung
SaveRegistrierung(*Registrierung) error SaveRegistrierung(*Registrierung) error
GetUnconfirmedRegistrierung() ([]*Registrierung, error) //GetUnconfirmedRegistrierung liefert alle unbestätigten Registrierungen
ConfirmedRegistrierung(registrierungId string) (*Registrierung, error) GetUnconfirmedRegistrierungen() ([]*Registrierung, error)
//ConfirmedRegistrierung bestätigt eine Registrierung
ConfirmedRegistrierung(registrierungID string) (*Registrierung, error)
} }

View File

@ -1,16 +1,19 @@
package registrierung package registrierung
//RegistrierungsService stellt die Businessfunktionalität für Registrierungen bereit
type RegistrierungsService struct { type RegistrierungsService struct {
Repository RegistrierungsRepository Repository RegistrierungsRepository
Notifier RegistrierungsNotifier Notifier RegistrierungsNotifier
} }
//HandleNewRegistrierung behandelte neue Registrierungen
func (rs *RegistrierungsService) HandleNewRegistrierung(reg *Registrierung) error { func (rs *RegistrierungsService) HandleNewRegistrierung(reg *Registrierung) error {
return rs.Repository.SaveRegistrierung(reg) return rs.Repository.SaveRegistrierung(reg)
} }
func (rs *RegistrierungsService) ConfirmRegistration(regId string) error { //ConfirmRegistration bestätigt eine Registrierung
registrierung, err := rs.Repository.ConfirmedRegistrierung(regId) func (rs *RegistrierungsService) ConfirmRegistration(regID string) error {
registrierung, err := rs.Repository.ConfirmedRegistrierung(regID)
if err != nil { if err != nil {
return err return err
} }
@ -18,6 +21,7 @@ func (rs *RegistrierungsService) ConfirmRegistration(regId string) error {
return rs.Notifier.InformAboutNewRegistrierung(registrierung) return rs.Notifier.InformAboutNewRegistrierung(registrierung)
} }
func (rs *RegistrierungsService) GetUnconfirmedRegistrierung() ([]*Registrierung, error) { //GetUnconfirmedRegistrierungen liefert alle noch nicht bestätigten Registrierungen
return rs.Repository.GetUnconfirmedRegistrierung() func (rs *RegistrierungsService) GetUnconfirmedRegistrierungen() ([]*Registrierung, error) {
return rs.Repository.GetUnconfirmedRegistrierungen()
} }