mirror of
https://github.com/Floriansylvain/RenewCMS.git
synced 2026-08-19 11:43:22 +02:00
Article GET route now returns Array
This commit is contained in:
+1
-1
@@ -54,7 +54,7 @@ func initArticlesRoutes(r *gin.Engine) {
|
|||||||
articlesRouter := r.Group("/articles")
|
articlesRouter := r.Group("/articles")
|
||||||
articlesRouter.Use(corsMiddleware, api.AuthMiddleware.MiddlewareFunc())
|
articlesRouter.Use(corsMiddleware, api.AuthMiddleware.MiddlewareFunc())
|
||||||
|
|
||||||
articlesRouter.GET("/", articles.GetAllArticlesHandler)
|
articlesRouter.GET("/", articles.GetArticleHandler)
|
||||||
articlesRouter.GET("/:id", articles.GetArticleHandler)
|
articlesRouter.GET("/:id", articles.GetArticleHandler)
|
||||||
articlesRouter.POST("/:id", articles.AddArticleHandler)
|
articlesRouter.POST("/:id", articles.AddArticleHandler)
|
||||||
articlesRouter.PATCH("/:id", articles.EditArticleHandler)
|
articlesRouter.PATCH("/:id", articles.EditArticleHandler)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type Article struct {
|
|||||||
|
|
||||||
var articlesLocation = database.Location{Database: "gohcms", Collection: "articles"}
|
var articlesLocation = database.Location{Database: "gohcms", Collection: "articles"}
|
||||||
|
|
||||||
func GetAllArticlesBusiness(documents [][]byte) []Article {
|
func ParseArticlesFromBytesToArray(documents [][]byte) []Article {
|
||||||
var articles = []Article{}
|
var articles = []Article{}
|
||||||
|
|
||||||
for i := 0; i < len(documents); i++ {
|
for i := 0; i < len(documents); i++ {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ var Article2, _ = bson.Marshal(Article{
|
|||||||
var BSONConvertedArticles = [][]byte{Article1, Article2}
|
var BSONConvertedArticles = [][]byte{Article1, Article2}
|
||||||
|
|
||||||
func TestGetAllArticlesBusiness(t *testing.T) {
|
func TestGetAllArticlesBusiness(t *testing.T) {
|
||||||
documents := GetAllArticlesBusiness(BSONConvertedArticles)
|
documents := ParseArticlesFromBytesToArray(BSONConvertedArticles)
|
||||||
article := documents[0]
|
article := documents[0]
|
||||||
|
|
||||||
if article.TitleID != "test_article_1" {
|
if article.TitleID != "test_article_1" {
|
||||||
|
|||||||
@@ -10,26 +10,21 @@ import (
|
|||||||
"go.mongodb.org/mongo-driver/bson"
|
"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) {
|
func GetArticleHandler(c *gin.Context) {
|
||||||
articleID := c.Params.ByName("id")
|
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 {
|
if err != nil {
|
||||||
api.SendBadRequest(c, fmt.Sprintf("The ID '%v' doesn't match any article.", articleID))
|
api.SendBadRequest(c, fmt.Sprintf("The ID '%v' doesn't match any article.", articleID))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var parsedArticle Article
|
|
||||||
bson.Unmarshal(article, &parsedArticle)
|
c.JSON(http.StatusOK, ParseArticlesFromBytesToArray(articles))
|
||||||
c.JSON(http.StatusOK, parsedArticle)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddArticleHandler(c *gin.Context) {
|
func AddArticleHandler(c *gin.Context) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export interface Article {
|
|||||||
|
|
||||||
const baseURL = `http://${__APP_ENV__.APP_HOST_ADDRESS}:${__APP_ENV__.APP_API_PORT}`
|
const baseURL = `http://${__APP_ENV__.APP_HOST_ADDRESS}:${__APP_ENV__.APP_API_PORT}`
|
||||||
|
|
||||||
export async function getArticle(id: string) : Promise<Article> {
|
export async function getArticles(id: string) : Promise<Array<Article>> {
|
||||||
return await fetch(`${baseURL}/articles/${id}`, {
|
return await fetch(`${baseURL}/articles/${id}`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: { "Authorization": `Bearer ${useAuthStore().token}` }
|
headers: { "Authorization": `Bearer ${useAuthStore().token}` }
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getArticle, type Article } from '@/utils/database';
|
import { getArticles, type Article } from '@/utils/database';
|
||||||
import Editor from '@tinymce/tinymce-vue';
|
import Editor from '@tinymce/tinymce-vue';
|
||||||
import { onMounted, ref, type Ref } from 'vue';
|
import { onMounted, ref, type Ref } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
@@ -8,7 +8,8 @@ const article: Ref<Article | void> = ref()
|
|||||||
const editorData: Ref<string> = ref('')
|
const editorData: Ref<string> = ref('')
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
article.value = await getArticle(useRoute().params.articleID as string)
|
const articleFetch = await getArticles(useRoute().params.articleID as string)
|
||||||
|
article.value = articleFetch[0]
|
||||||
editorData.value = article.value.content.html
|
editorData.value = article.value.content.html
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user