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

Method Index

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

Source from the content-addressed store, hash-verified

307}
308
309func (c *SpaceComponent) Index(ctx context.Context, filter *types.RepoFilter, per, page int) ([]types.Space, int, error) {
310 var (
311 resSpaces []types.Space
312 err error
313 )
314 repos, total, err := c.PublicToUser(ctx, types.SpaceRepo, filter.Username, filter, per, page)
315 if err != nil {
316 newError := fmt.Errorf("failed to get public space repos,error:%w", err)
317 return nil, 0, newError
318 }
319 var repoIDs []int64
320 for _, repo := range repos {
321 repoIDs = append(repoIDs, repo.ID)
322 }
323 spaces, err := c.ss.ByRepoIDs(ctx, repoIDs)
324 if err != nil {
325 newError := fmt.Errorf("failed to get spaces by repo ids,error:%w", err)
326 return nil, 0, newError
327 }
328
329 // loop through repos to keep the repos in sort order
330 for _, repo := range repos {
331 var space *database.Space
332 for _, s := range spaces {
333 if s.RepositoryID == repo.ID {
334 space = &s
335 space.Repository = repo
336 break
337 }
338 }
339 if space == nil {
340 continue
341 }
342 _, status, _ := c.status(ctx, space)
343 var tags []types.RepoTag
344 for _, tag := range space.Repository.Tags {
345 tags = append(tags, types.RepoTag{
346 Name: tag.Name,
347 Category: tag.Category,
348 Group: tag.Group,
349 BuiltIn: tag.BuiltIn,
350 ShowName: tag.ShowName,
351 CreatedAt: tag.CreatedAt,
352 UpdatedAt: tag.UpdatedAt,
353 })
354 }
355 resSpaces = append(resSpaces, types.Space{
356 Name: space.Repository.Name,
357 Description: space.Repository.Description,
358 Path: space.Repository.Path,
359 Sdk: space.Sdk,
360 SdkVersion: space.SdkVersion,
361 Template: space.Template,
362 Env: space.Env,
363 Hardware: space.Hardware,
364 Secrets: space.Secrets,
365 CoverImageUrl: space.CoverImageUrl,
366 License: space.Repository.License,

Callers

nothing calls this directly

Calls 3

statusMethod · 0.95
PublicToUserMethod · 0.45
ByRepoIDsMethod · 0.45

Tested by

no test coverage detected