MCPcopy Create free account
hub / github.com/OpenCSGs/csghub-server / Index

Method Index

component/model.go:96–160  ·  view source on GitHub ↗
(ctx context.Context, filter *types.RepoFilter, per, page int)

Source from the content-addressed store, hash-verified

94}
95
96func (c *ModelComponent) Index(ctx context.Context, filter *types.RepoFilter, per, page int) ([]types.Model, int, error) {
97 var (
98 err error
99 resModels []types.Model
100 )
101 repos, total, err := c.PublicToUser(ctx, types.ModelRepo, filter.Username, filter, per, page)
102 if err != nil {
103 newError := fmt.Errorf("failed to get public model repos,error:%w", err)
104 return nil, 0, newError
105 }
106 var repoIDs []int64
107 for _, repo := range repos {
108 repoIDs = append(repoIDs, repo.ID)
109 }
110 models, err := c.ms.ByRepoIDs(ctx, repoIDs)
111 if err != nil {
112 newError := fmt.Errorf("failed to get models by repo ids,error:%w", err)
113 return nil, 0, newError
114 }
115
116 // loop through repos to keep the repos in sort order
117 for _, repo := range repos {
118 var model *database.Model
119 for _, m := range models {
120 if m.RepositoryID == repo.ID {
121 model = &m
122 break
123 }
124 }
125 if model == nil {
126 continue
127 }
128 var tags []types.RepoTag
129 for _, tag := range repo.Tags {
130 tags = append(tags, types.RepoTag{
131 Name: tag.Name,
132 Category: tag.Category,
133 Group: tag.Group,
134 BuiltIn: tag.BuiltIn,
135 ShowName: tag.ShowName,
136 CreatedAt: tag.CreatedAt,
137 UpdatedAt: tag.UpdatedAt,
138 })
139 }
140 resModels = append(resModels, types.Model{
141 ID: model.ID,
142 Name: repo.Name,
143 Nickname: repo.Nickname,
144 Description: repo.Description,
145 Likes: repo.Likes,
146 Downloads: repo.DownloadCount,
147 Path: repo.Path,
148 RepositoryID: repo.ID,
149 Private: repo.Private,
150 CreatedAt: model.CreatedAt,
151 Tags: tags,
152 UpdatedAt: repo.UpdatedAt,
153 Source: repo.Source,

Callers

nothing calls this directly

Calls 3

BuildCloneInfoFunction · 0.92
PublicToUserMethod · 0.45
ByRepoIDsMethod · 0.45

Tested by

no test coverage detected