From 71e305766cec892260c8cbcd39f5fe07fb203713 Mon Sep 17 00:00:00 2001 From: Florian Sylvain Date: Mon, 9 Jan 2023 17:37:22 +0100 Subject: [PATCH] Article GET route now returns Array --- cmd/main.go | 2 +- internal/articles/business.go | 2 +- internal/articles/business_test.go | 2 +- internal/articles/handlers.go | 23 +++++++++-------------- web/admin-gui/src/utils/database.ts | 2 +- web/admin-gui/src/views/ArticlesEdit.vue | 5 +++-- 6 files changed, 16 insertions(+), 20 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 03d51a0..1a5a2e2 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -54,7 +54,7 @@ func initArticlesRoutes(r *gin.Engine) { articlesRouter := r.Group("/articles") articlesRouter.Use(corsMiddleware, api.AuthMiddleware.MiddlewareFunc()) - articlesRouter.GET("/", articles.GetAllArticlesHandler) + articlesRouter.GET("/", articles.GetArticleHandler) articlesRouter.GET("/:id", articles.GetArticleHandler) articlesRouter.POST("/:id", articles.AddArticleHandler) articlesRouter.PATCH("/:id", articles.EditArticleHandler) diff --git a/internal/articles/business.go b/internal/articles/business.go index d5ba450..672361b 100644 --- a/internal/articles/business.go +++ b/internal/articles/business.go @@ -17,7 +17,7 @@ type Article struct { var articlesLocation = database.Location{Database: "gohcms", Collection: "articles"} -func GetAllArticlesBusiness(documents [][]byte) []Article { +func ParseArticlesFromBytesToArray(documents [][]byte) []Article { var articles = []Article{} for i := 0; i < len(documents); i++ { diff --git a/internal/articles/business_test.go b/internal/articles/business_test.go index 5c9a91c..999d080 100644 --- a/internal/articles/business_test.go +++ b/internal/articles/business_test.go @@ -27,7 +27,7 @@ var Article2, _ = bson.Marshal(Article{ var BSONConvertedArticles = [][]byte{Article1, Article2} func TestGetAllArticlesBusiness(t *testing.T) { - documents := GetAllArticlesBusiness(BSONConvertedArticles) + documents := ParseArticlesFromBytesToArray(BSONConvertedArticles) article := documents[0] if article.TitleID != "test_article_1" { diff --git a/internal/articles/handlers.go b/internal/articles/handlers.go index b155333..55856e4 100644 --- a/internal/articles/handlers.go +++ b/internal/articles/handlers.go @@ -10,26 +10,21 @@ import ( "go.mongodb.org/mongo-driver/bson" ) -func GetAllArticlesHandler(c *gin.Context) { - documents, err := database.GetDocuments(articlesLocation, gin.H{}) - if err != nil { - api.SendBadRequest(c, err.Error()) - return - } - c.JSON(http.StatusOK, GetAllArticlesBusiness(documents)) -} - func GetArticleHandler(c *gin.Context) { articleID := c.Params.ByName("id") - article, err := database.GetUniqueDocument(articlesLocation, - gin.H{"titleID": articleID}) + + filter := gin.H{} + if articleID != "" { + filter["titleID"] = articleID + } + + articles, err := database.GetDocuments(articlesLocation, filter) if err != nil { api.SendBadRequest(c, fmt.Sprintf("The ID '%v' doesn't match any article.", articleID)) return } - var parsedArticle Article - bson.Unmarshal(article, &parsedArticle) - c.JSON(http.StatusOK, parsedArticle) + + c.JSON(http.StatusOK, ParseArticlesFromBytesToArray(articles)) } func AddArticleHandler(c *gin.Context) { diff --git a/web/admin-gui/src/utils/database.ts b/web/admin-gui/src/utils/database.ts index 078a4d3..f3467bf 100644 --- a/web/admin-gui/src/utils/database.ts +++ b/web/admin-gui/src/utils/database.ts @@ -13,7 +13,7 @@ export interface Article { const baseURL = `http://${__APP_ENV__.APP_HOST_ADDRESS}:${__APP_ENV__.APP_API_PORT}` -export async function getArticle(id: string) : Promise
{ +export async function getArticles(id: string) : Promise> { return await fetch(`${baseURL}/articles/${id}`, { method: 'GET', headers: { "Authorization": `Bearer ${useAuthStore().token}` } diff --git a/web/admin-gui/src/views/ArticlesEdit.vue b/web/admin-gui/src/views/ArticlesEdit.vue index b36ea2e..cec1eb4 100644 --- a/web/admin-gui/src/views/ArticlesEdit.vue +++ b/web/admin-gui/src/views/ArticlesEdit.vue @@ -1,5 +1,5 @@