(ctx context.Context, filter *types.RepoFilter, per, page int)
| 94 | } |
| 95 | |
| 96 | func (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, |
nothing calls this directly
no test coverage detected