diff --git a/cmd/main.go b/cmd/main.go index c15c641..bc93212 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -19,6 +19,7 @@ func initGin() { r.SetTrustedProxies([]string{"localhost"}) r.GET("/ping", internal.Ping) + r.GET("/get-all-articles", internal.GetAllArticles) r.POST("/add-article", internal.AddArticle) r.Run(":" + os.Getenv("API_PORT")) diff --git a/internal/addArticle.go b/internal/addArticle.go deleted file mode 100644 index 6e83e89..0000000 --- a/internal/addArticle.go +++ /dev/null @@ -1,29 +0,0 @@ -package internal - -import ( - "github.com/gin-gonic/gin" - "go.mongodb.org/mongo-driver/bson" -) - -type Article struct { - Id_name string `json:"id_name" bson:"id_name"` - Date int64 `json:"date" bson:"date"` - Content interface{} `json:"content" bson:"content"` -} - -func AddArticle(c *gin.Context) { - var article Article - if c.BindJSON(&article) != nil { - SendErrorMessageToClient(c, "Could not correctly parse the article.") - } - - document, err := bson.Marshal(article) - if err != nil { - SendErrorMessageToClient(c, "Could not correctly marshal the article.") - } - - err = pushDocument(Location{Database: "gohcms", Collection: "articles"}, document) - if err != nil { - SendErrorMessageToClient(c, "Could not insert document into DB.") - } -} diff --git a/internal/articles.go b/internal/articles.go new file mode 100644 index 0000000..4c6a38e --- /dev/null +++ b/internal/articles.go @@ -0,0 +1,55 @@ +package internal + +import ( + "fmt" + "net/http" + + "github.com/gin-gonic/gin" + "go.mongodb.org/mongo-driver/bson" +) + +type Article struct { + Id_name string `json:"id_name" bson:"id_name"` + Date int64 `json:"date" bson:"date"` + Content interface{} `json:"content" bson:"content"` +} + +var ARTICLES_LOCATION = Location{Database: "gohcms", Collection: "articles"} + +// TODO check if id_name is unique among all articles + +func AddArticle(c *gin.Context) { + var article Article + if c.BindJSON(&article) != nil { + SendErrorMessageToClient(c, "Could not correctly parse the article.") + } + + document, err := bson.Marshal(article) + if err != nil { + SendErrorMessageToClient(c, "could not correctly marshal the article") + } + + err = pushDocument(ARTICLES_LOCATION, document) + if err != nil { + SendErrorMessageToClient(c, "could not insert document into DB") + } + + SendOkMessageToClient(c, "Article successfully added!") +} + +func GetAllArticles(c *gin.Context) { + var articles []Article + documents, err := getDocuments(ARTICLES_LOCATION, bson.D{}) + if err != nil { + SendErrorMessageToClient(c, err.Error()) + } + + for i := 0; i < len(documents); i++ { + var newArticle Article + bson.Unmarshal(documents[i], &newArticle) + fmt.Println(newArticle) + articles = append(articles, newArticle) + } + + c.JSON(http.StatusOK, articles) +}