You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB
Go

1 month ago
package article
import (
"cls/internal/domain/article"
"cls/pkg/logger"
"cls/pkg/util/page"
"cls/pkg/xorm_engine"
"errors"
"fmt"
1 month ago
"xorm.io/builder"
)
type ArticleRepositoryORM struct {
engine *xorm_engine.Engine
log logger.Logger
}
var _ article.ArticleRepository = (*ArticleRepositoryORM)(nil)
func NewArticleRepositoryORM(db *xorm_engine.Engine, log logger.New) article.ArticleRepository {
return &ArticleRepositoryORM{db, log("cls:persistence:article")}
}
func (a ArticleRepositoryORM) Find(page *page.Page, conds []builder.Cond) error {
page.Desc = append(page.Desc, "ctime")
//err := a.engine.Cls.Desc("ctime").Limit(page.PageSize, page.PageNumber*page.PageSize).
// Find(page.Content, &article.LianV1Article{})
return a.engine.FindAllCls(page, &article.LianV1Article{}, builder.And(conds...))
1 month ago
}
func (a ArticleRepositoryORM) GetArticleById(id uint64) (*article.LianV1Article, error) {
article := &article.LianV1Article{}
has, err := a.engine.Cls.Where(builder.Eq{"id": id}).Get(article)
1 month ago
if err != nil {
return nil, err
}
if !has {
return nil, errors.New(fmt.Sprintf("未查询到文章【%d】", id))
1 month ago
}
return article, nil
}