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

Method Show

component/model.go:346–425  ·  view source on GitHub ↗
(ctx context.Context, namespace, name, currentUser string)

Source from the content-addressed store, hash-verified

344}
345
346func (c *ModelComponent) Show(ctx context.Context, namespace, name, currentUser string) (*types.Model, error) {
347 var tags []types.RepoTag
348 model, err := c.ms.FindByPath(ctx, namespace, name)
349 if err != nil {
350 return nil, fmt.Errorf("failed to find model, error: %w", err)
351 }
352
353 permission, err := c.getUserRepoPermission(ctx, currentUser, model.Repository)
354 if err != nil {
355 return nil, fmt.Errorf("failed to get user repo permission, error: %w", err)
356 }
357 if !permission.CanRead {
358 return nil, ErrUnauthorized
359 }
360
361 ns, err := c.getNameSpaceInfo(ctx, namespace)
362 if err != nil {
363 return nil, fmt.Errorf("failed to get namespace info for model, error: %w", err)
364 }
365
366 for _, tag := range model.Repository.Tags {
367 tags = append(tags, types.RepoTag{
368 Name: tag.Name,
369 Category: tag.Category,
370 Group: tag.Group,
371 BuiltIn: tag.BuiltIn,
372 ShowName: tag.ShowName,
373 CreatedAt: tag.CreatedAt,
374 UpdatedAt: tag.UpdatedAt,
375 })
376 }
377
378 likeExists, err := c.uls.IsExist(ctx, currentUser, model.Repository.ID)
379 if err != nil {
380 newError := fmt.Errorf("failed to check for the presence of the user likes,error:%w", err)
381 return nil, newError
382 }
383
384 resModel := &types.Model{
385 ID: model.ID,
386 Name: model.Repository.Name,
387 Nickname: model.Repository.Nickname,
388 Description: model.Repository.Description,
389 Likes: model.Repository.Likes,
390 Downloads: model.Repository.DownloadCount,
391 Path: model.Repository.Path,
392 RepositoryID: model.Repository.ID,
393 DefaultBranch: model.Repository.DefaultBranch,
394 Repository: common.BuildCloneInfo(c.config, model.Repository),
395 Private: model.Repository.Private,
396 Tags: tags,
397 User: &types.User{
398 Username: model.Repository.User.Username,
399 Nickname: model.Repository.User.NickName,
400 Email: model.Repository.User.Email,
401 },
402 CreatedAt: model.CreatedAt,
403 UpdatedAt: model.Repository.UpdatedAt,

Callers

nothing calls this directly

Calls 6

BuildCloneInfoFunction · 0.92
getUserRepoPermissionMethod · 0.80
getNameSpaceInfoMethod · 0.80
GetByRepoIDsAndTypeMethod · 0.80
FindByPathMethod · 0.45
IsExistMethod · 0.45

Tested by

no test coverage detected