Browse Source

#3188

update
fix-1523
chenyifan01 2 years ago
parent
commit
c08838caee
5 changed files with 86 additions and 30 deletions
  1. +45
    -0
      models/repo.go
  2. +1
    -1
      models/repo_list.go
  3. +2
    -2
      models/repo_tag.go
  4. +1
    -1
      routers/home.go
  5. +37
    -26
      services/repository/square.go

+ 45
- 0
models/repo.go View File

@@ -242,12 +242,57 @@ type Repository struct {
LastFourMonthCommits int64 `xorm:"NOT NULL DEFAULT 0"`
}

// Repository4Card format for front display
type Repository4Card struct {
ID int64
OwnerID int64
OwnerName string
LowerName string
Name string
NumWatches int
NumStars int
NumForks int
Description string
Topics []string
AiTaskCnt int64
ModelCnt int64
DatasetCnt int64
CreatedUnix timeutil.TimeStamp
UpdatedUnix timeutil.TimeStamp
PrimaryLanguage *LanguageStat
RelAvatarLink string
}

type RepositoryShow struct {
Name string
RepoType RepoType
Alias string
}

func (repo *Repository) ToCardFormat() *Repository4Card {
r := repo.RelAvatarLink()
result := &Repository4Card{
ID: repo.ID,
OwnerID: repo.OwnerID,
OwnerName: repo.OwnerName,
LowerName: repo.LowerName,
Name: repo.Name,
NumWatches: repo.NumWatches,
NumStars: repo.NumStars,
NumForks: repo.NumForks,
Description: repo.Description,
Topics: repo.Topics,
AiTaskCnt: repo.AiTaskCnt,
ModelCnt: repo.ModelCnt,
DatasetCnt: repo.DatasetCnt,
CreatedUnix: repo.CreatedUnix,
UpdatedUnix: repo.UpdatedUnix,
PrimaryLanguage: repo.PrimaryLanguage,
RelAvatarLink: r,
}
return result
}

// SanitizedOriginalURL returns a sanitized OriginalURL
func (repo *Repository) SanitizedOriginalURL() string {
if repo.OriginalURL == "" {


+ 1
- 1
models/repo_list.go View File

@@ -202,7 +202,7 @@ func (s SearchOrderBy) String() string {
}

type FindReposResponse struct {
Repos RepositoryList
Repos []*Repository4Card
Page int
PageSize int
Total int64


+ 2
- 2
models/repo_tag.go View File

@@ -174,7 +174,7 @@ type FindSelectedReposOpts struct {
OnlyPublic bool
}

func GetSelectedRepos(opts FindSelectedReposOpts) ([]Repository, error) {
func GetSelectedRepos(opts FindSelectedReposOpts) ([]*Repository, error) {
if opts.Page < 1 {
opts.Page = 1
}
@@ -186,7 +186,7 @@ func GetSelectedRepos(opts FindSelectedReposOpts) ([]Repository, error) {
if opts.OnlyPublic {
cond = cond.And(builder.Eq{"repository.is_private": false})
}
t := make([]Repository, 0)
t := make([]*Repository, 0)
err := x.Join("inner", "official_tag_repos", "repository.id = official_tag_repos.repo_id").
Join("inner", "official_tag", "official_tag.id = official_tag_repos.tag_id").
Where(cond).OrderBy("repository.updated_unix desc").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).Find(&t)


+ 1
- 1
routers/home.go View File

@@ -297,7 +297,7 @@ func ExploreRepos(ctx *context.Context) {
}

func RepoSquare(ctx *context.Context) {
var result []models.Repository
var result []*models.Repository4Card
var err error
switch ctx.Query("type") {
case "preferred":


+ 37
- 26
services/repository/square.go View File

@@ -6,18 +6,26 @@ import (
"code.gitea.io/gitea/modules/setting"
)

func GetPreferredRepos() ([]models.Repository, error) {
return models.GetSelectedRepos(models.FindSelectedReposOpts{
func GetPreferredRepos() ([]*models.Repository4Card, error) {
repos, err := models.GetSelectedRepos(models.FindSelectedReposOpts{
ListOptions: models.ListOptions{
PageSize: 10,
Page: 1,
},
OnlyPublic: true,
})
if err != nil {
return nil, err
}
result := make([]*models.Repository4Card, len(repos))
for i, r := range repos {
result[i] = r.ToCardFormat()
}
return result, nil
}

func GetIncubationRepos() ([]models.Repository, error) {
return models.GetSelectedRepos(models.FindSelectedReposOpts{
func GetIncubationRepos() ([]*models.Repository4Card, error) {
repos, err := models.GetSelectedRepos(models.FindSelectedReposOpts{
ListOptions: models.ListOptions{
PageSize: 10,
Page: 1,
@@ -25,9 +33,17 @@ func GetIncubationRepos() ([]models.Repository, error) {
OrgId: setting.IncubationSourceOrgId,
OnlyPublic: true,
})
if err != nil {
return nil, err
}
result := make([]*models.Repository4Card, len(repos))
for i, r := range repos {
result[i] = r.ToCardFormat()
}
return result, nil
}

func GetHotPaperRepos() ([]models.Repository, error) {
func GetHotPaperRepos() ([]*models.Repository4Card, error) {
rlist, _, err := models.SearchRepository(&models.SearchRepoOptions{
ListOptions: models.ListOptions{
Page: 1,
@@ -41,9 +57,9 @@ func GetHotPaperRepos() ([]models.Repository, error) {
if err != nil {
return nil, err
}
result := make([]models.Repository, len(rlist))
result := make([]*models.Repository4Card, len(rlist))
for i, r := range rlist {
result[i] = *r
result[i] = r.ToCardFormat()
}
return result, nil
}
@@ -69,40 +85,30 @@ func FindRepos(opts FindReposOptions) (*models.FindReposResponse, error) {

switch opts.Sort {
//1.近期热门:按最近1个月浏览量倒序排序,最近1个月浏览量>最近更新>项目名称升序
//2.近期活跃:按提交增长量(最近4个月commit数)倒序排序,提交增长量>最近更新>项目名称升序。
//3.最近更新:按最近更新>项目名称升序排序。
//4.最近创建:按项目创建时间排序,最近的排前面。最近创建>项目名称升序。
//5.点赞最多:按点赞数倒序排序。点赞数>最近更新>项目名称升序。
//6.派生最多:按派生数倒序排序。派生数>最近更新>项目名称升序。
//7.数据集最多:按项目包含的数据集文件数量倒序排序,数据集文件数>最近更新>项目名称升序。
//8.AI任务最多:按项目包含的AI任务数量倒序排序,AI任务数>最近更新>项目名称升序。
//9.模型最多:按项目包含的模型数量倒序排序,模型大小为0则不统计。模型数>最近更新>项目名称升序。\

//1.近期热门
case "most_popular":
orderBy = models.SearchOrderByLastMonthVisitsReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically
//2.近期活跃
//2.近期活跃:按提交增长量(最近4个月commit数)倒序排序,提交增长量>最近更新>项目名称升序。
case "most_active":
orderBy = models.SearchOrderByLastFourMonthCommitsReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically
//3.最近更新
//3.最近更新:按最近更新>项目名称升序排序。
case "recent_update":
orderBy = models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically
//4.最近创建
//4.最近创建:按项目创建时间排序,最近的排前面。最近创建>项目名称升序。
case "newest":
orderBy = models.SearchOrderByNewest + "," + models.SearchOrderByAlphabetically
//5.点赞最多
//5.点赞最多:按点赞数倒序排序。点赞数>最近更新>项目名称升序。
case "most_stars":
orderBy = models.SearchOrderByStarsReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically
//6.派生最多
//6.派生最多:按派生数倒序排序。派生数>最近更新>项目名称升序。
case "most_forks":
orderBy = models.SearchOrderByForksReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically
//7.数据集最多
//7.数据集最多:按项目包含的数据集文件数量倒序排序,数据集文件数>最近更新>项目名称升序。
case "most_datasets":
orderBy = models.SearchOrderByDatasetCntReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically
//8.AI任务最多
//8.AI任务最多:按项目包含的AI任务数量倒序排序,AI任务数>最近更新>项目名称升序。
case "most_ai_tasks":
orderBy = models.SearchOrderByAiTaskCntReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically
//9.模型最多
//9.模型最多:按项目包含的模型数量倒序排序,模型大小为0则不统计。模型数>最近更新>项目名称升序。
case "most_models":
orderBy = models.SearchOrderByModelCntReverse + "," + models.SearchOrderByRecentUpdated + "," + models.SearchOrderByAlphabetically

@@ -126,8 +132,13 @@ func FindRepos(opts FindReposOptions) (*models.FindReposResponse, error) {
log.Error("FindRepos error when SearchRepository.%v", err)
return nil, err
}
result := make([]*models.Repository4Card, len(repos))
for i, r := range repos {
result[i] = r.ToCardFormat()
}

return &models.FindReposResponse{
Repos: repos,
Repos: result,
Total: count,
Page: opts.Page,
PageSize: opts.PageSize,


Loading…
Cancel
Save