From 47a03c7b17e2ce3f707912a93c9ba3edaae5a42b Mon Sep 17 00:00:00 2001
From: Yege1893 <yannick.ege@web.de>
Date: Sun, 18 Jun 2023 11:23:42 +0200
Subject: [PATCH] matches: create, deleteall, getall, getbyid

---
 src/highlanderticketing/main.go          | 16 ++++++-
 src/highlanderticketing/model/match.go   | 14 +++---
 src/highlanderticketing/service/match.go | 54 ++++++++++++++++++++++++
 3 files changed, 77 insertions(+), 7 deletions(-)

diff --git a/src/highlanderticketing/main.go b/src/highlanderticketing/main.go
index 7591ffb..4af90d2 100644
--- a/src/highlanderticketing/main.go
+++ b/src/highlanderticketing/main.go
@@ -11,6 +11,7 @@ import (
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/handler"
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model"
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/service"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 )
 
 func main() {
@@ -19,7 +20,10 @@ func main() {
 	if err != nil {
 		log.Fatal(err)
 	}
-	var model1 = model.Match{1, 12, 12, true, "aaa"}
+
+	// Testen
+	objectID := primitive.NewObjectID()
+	var model1 = model.Match{ID: objectID, InitialTicketAmount: 1, AvailableTicketAmount: 1, AwayMatch: true, Location: "aaa"}
 	err1 := service.CreateMatch(&model1)
 	if err1 != nil {
 		fmt.Println(err)
@@ -29,6 +33,16 @@ func main() {
 		fmt.Println(err)
 	}
 	fmt.Println(matches)
+	match, err := service.GetMatchByID(objectID)
+	if err != nil {
+		fmt.Println(err)
+	}
+	fmt.Println(match)
+	deleted := service.DeleteAllMatches()
+	if err != nil {
+		fmt.Println(deleted)
+	}
+
 	router.HandleFunc("/health", handler.Health).Methods("GET")
 	if err := http.ListenAndServe(":8000", router); err != nil {
 		log.Fatal(err)
diff --git a/src/highlanderticketing/model/match.go b/src/highlanderticketing/model/match.go
index 5548310..1311852 100644
--- a/src/highlanderticketing/model/match.go
+++ b/src/highlanderticketing/model/match.go
@@ -1,13 +1,15 @@
 package model
 
+import "go.mongodb.org/mongo-driver/bson/primitive"
+
 type Match struct {
-	ID                    uint
-	InitialTicketAmount   int32
-	AvailableTicketAmount int32
-	AwayMatch             bool
-	Location              string
+	ID                    primitive.ObjectID `bson:"_id"`
+	InitialTicketAmount   int32              `bson:"initial_ticket_amount"`
+	AvailableTicketAmount int32              `bson:"available_ticket_amount"`
+	AwayMatch             bool               `bson:"away_match"`
+	Location              string             `bson:"location"`
 	//Date                  date.Date
-	//Travel Travel
+	//Travel                Travel
 	//Orders                []Order
 }
 
diff --git a/src/highlanderticketing/service/match.go b/src/highlanderticketing/service/match.go
index 356bcb6..f974de1 100644
--- a/src/highlanderticketing/service/match.go
+++ b/src/highlanderticketing/service/match.go
@@ -6,6 +6,7 @@ import (
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/db"
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model"
 	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 	"go.mongodb.org/mongo-driver/mongo"
 )
 
@@ -23,6 +24,28 @@ func CreateMatch(match *model.Match) error {
 	return nil
 }
 
+// noch testen
+func CreateMatches(list *[]model.Match) error {
+	insertableList := make([]interface{}, len(*list))
+	for i, v := range *list {
+		insertableList[i] = v
+	}
+
+	client, err := db.GetMongoClient()
+	if err != nil {
+		return err
+	}
+
+	collection := client.Database(db.DB).Collection(db.MATCHES)
+
+	_, err = collection.InsertMany(context.TODO(), insertableList)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
 func GetAllMatches() ([]model.Match, error) {
 	filter := bson.D{{}}
 	matches := []model.Match{}
@@ -53,3 +76,34 @@ func GetAllMatches() ([]model.Match, error) {
 
 	return matches, nil
 }
+
+func GetMatchByID(matchID primitive.ObjectID) (*model.Match, error) {
+	result := model.Match{}
+	filter := bson.D{primitive.E{Key: "_id", Value: matchID}}
+
+	client, err := db.GetMongoClient()
+	if err != nil {
+		return &result, err
+	}
+	collection := client.Database(db.DB).Collection(db.MATCHES)
+
+	err = collection.FindOne(context.TODO(), filter).Decode(&result)
+	if err != nil {
+		return &result, err
+	}
+	return &result, nil
+}
+
+func DeleteAllMatches() error {
+	selector := bson.D{{}}
+	client, err := db.GetMongoClient()
+	if err != nil {
+		return err
+	}
+	collection := client.Database(db.DB).Collection(db.MATCHES)
+	_, err = collection.DeleteMany(context.TODO(), selector)
+	if err != nil {
+		return err
+	}
+	return nil
+}
-- 
GitLab