65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
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.ListArticle {
|
|
return listArticles(1, 0)
|
|
}
|
|
|
|
//ListPublishedArticlesByUser list the user's published articles
|
|
func ListPublishedArticlesByUser(id int) *[]models.ListArticle {
|
|
return listArticles(1, id)
|
|
}
|
|
|
|
//ListNotPublishedArticlesByUser list the user's not publish articles
|
|
func ListNotPublishedArticlesByUser(id int) *[]models.ListArticle {
|
|
return listArticles(0, id)
|
|
}
|
|
|
|
//listArticles complex function need to directly use gorm
|
|
func listArticles(isPublish int, createUser int) *[]models.ListArticle {
|
|
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.ListArticle
|
|
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.ListArticle{}
|
|
}
|
|
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
|
|
}
|