package article import ( "nCovTrack-Backend/global" "nCovTrack-Backend/models" "strconv" ) //ListPublishedArticles list the articles published, use to show the articles to all people func ListPublishedArticles() *[]models.ListArtile { return listArticles(1, 0) } func ListPublishedArticlesByUser(id int) *[]models.ListArtile { return listArticles(1, id) } //ListAllArticles list all articles(without not published) // TODO: need only show the user's not published article func ListNotPublishedArticlesByUser(id int) *[]models.ListArtile { return listArticles(0, id) } func listArticles(isPublish int, createUser int) *[]models.ListArtile { queryStr := "back_article.is_delete = 0 AND is_publish = " + strconv.Itoa(isPublish) if createUser != 0 { queryStr += " AND create_user = " + strconv.Itoa(createUser) } var res []models.ListArtile global.Db.Table("back_article"). Select("back_user.username, back_article.*"). Joins("join back_user on back_article.create_user=back_user.id"). Where(queryStr).Find(&res) if res == nil { res = []models.ListArtile{} } return &res } //SaveArticle save the articles func SaveArticle(article map[string]interface{}) (ok bool) { models.BeforeSave(article, -1) ok, rows := models.Upsert[models.BackArticle](article) return ok && rows != 0 } //DeleteArticle delete article by id func DeleteArticle(id int) (ok bool) { ok, rowsAffected := models.DeleteById[models.BackArticle](id) return ok && rowsAffected != 0 } //GetArticleById get an article func GetArticleById(id int) map[string]interface{} { return models.Get[models.BackArticle]([]map[string]interface{}{{"id": id}}) } //PublishArticle publish an article func PublishArticle(id int) (ok bool) { colMap := map[string]interface{}{"id": id, "is_publish": 1} ok, rowsAffected := models.Upsert[models.BackArticle](colMap) return ok && rowsAffected != 0 }