diff --git a/internal/articles/business.go b/internal/articles/business.go index ab78e54..d5ba450 100644 --- a/internal/articles/business.go +++ b/internal/articles/business.go @@ -7,11 +7,12 @@ import ( ) type Article struct { - IdName string `json:"id_name" bson:"id_name"` - Date int64 `json:"date" bson:"date"` - Content gin.H `json:"content" bson:"content"` - PageID string `json:"page_id" bson:"page_id"` - Online bool `json:"online" bson:"online"` + TitleID string `json:"titleID" bson:"titleID"` + Title string `json:"title" bson:"title"` + Date int64 `json:"date" bson:"date"` + Content gin.H `json:"content" bson:"content"` + Tags []string `json:"tags" bson:"tags"` + Online bool `json:"online" bson:"online"` } var articlesLocation = database.Location{Database: "gohcms", Collection: "articles"} @@ -32,7 +33,7 @@ func IsArticleIdAlreadyUsed(id string, documents [][]byte) bool { for i := 0; i < len(documents); i++ { var newArticle Article bson.Unmarshal(documents[i], &newArticle) - if newArticle.IdName == id { + if newArticle.TitleID == id { return true } } diff --git a/internal/articles/business_test.go b/internal/articles/business_test.go index 48a8e5b..5c9a91c 100644 --- a/internal/articles/business_test.go +++ b/internal/articles/business_test.go @@ -9,18 +9,18 @@ import ( ) var Article1, _ = bson.Marshal(Article{ - IdName: "test_article_1", + TitleID: "test_article_1", Date: 1671482492, Content: gin.H{}, - PageID: "blog", + Tags: []string{"blog"}, Online: false, }) var Article2, _ = bson.Marshal(Article{ - IdName: "test_article_2", + TitleID: "test_article_2", Date: 1671899112, Content: gin.H{}, - PageID: "blog", + Tags: []string{"blog"}, Online: false, }) @@ -30,8 +30,8 @@ func TestGetAllArticlesBusiness(t *testing.T) { documents := GetAllArticlesBusiness(BSONConvertedArticles) article := documents[0] - if article.IdName != "test_article_1" { - log.Fatalf(`Excepted "test_article_1" as IdName, found "%v"`, article.IdName) + if article.TitleID != "test_article_1" { + log.Fatalf(`Excepted "test_article_1" as IdName, found "%v"`, article.TitleID) } else if article.Date != 1671482492 { log.Fatalf(`Excepted 1671482492 as Date, found "%v"`, article.Date) } diff --git a/internal/articles/handlers.go b/internal/articles/handlers.go index 0fa4e0e..49f215e 100644 --- a/internal/articles/handlers.go +++ b/internal/articles/handlers.go @@ -34,7 +34,7 @@ func GetArticleHandler(c *gin.Context) { func AddArticleHandler(c *gin.Context) { var article Article - article.IdName = c.Params.ByName("id") + article.TitleID = c.Params.ByName("id") if c.BindJSON(&article) != nil { api.SendBadRequest(c, "Could not correctly parse the article.") return @@ -47,7 +47,7 @@ func AddArticleHandler(c *gin.Context) { } documents, _ := database.GetDocuments(articlesLocation, gin.H{}) - if IsArticleIdAlreadyUsed(article.IdName, documents) { + if IsArticleIdAlreadyUsed(article.TitleID, documents) { api.SendBadRequest(c, "Article ID already used.") return } diff --git a/mongo-init.js b/mongo-init.js index 57f0f96..9dc0d3b 100644 --- a/mongo-init.js +++ b/mongo-init.js @@ -4,23 +4,26 @@ const db = conn.getDB("gohcms") db.createCollection('articles', { validator: { $jsonSchema: { - required: ['content', 'date', 'id_name', 'page_id', 'online'], + required: ['titleID', 'title', 'content', 'date', 'tags', 'online'], properties: { _id: { bsonType: 'objectId' }, + titleID: { + bsonType: 'string', + pattern: '^[-a-z]+$' + }, + title: { + bsonType: 'string' + }, content: { bsonType: 'object' }, date: { bsonType: 'number' }, - id_name: { - bsonType: 'string', - pattern: '^.+$' - }, - page_id: { - bsonType: 'string' + tags: { + bsonType: 'array' }, online: { bsonType: 'bool'