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

Method Create

component/space.go:65–182  ·  view source on GitHub ↗
(ctx context.Context, req types.CreateSpaceReq)

Source from the content-addressed store, hash-verified

63}
64
65func (c *SpaceComponent) Create(ctx context.Context, req types.CreateSpaceReq) (*types.Space, error) {
66 var nickname string
67 if req.Nickname != "" {
68 nickname = req.Nickname
69 } else {
70 nickname = req.Name
71 }
72 if req.DefaultBranch == "" {
73 req.DefaultBranch = "main"
74 }
75 req.Nickname = nickname
76 req.RepoType = types.SpaceRepo
77 req.Readme = generateReadmeData(req.License)
78 resource, err := c.srs.FindByID(ctx, req.ResourceID)
79 if err != nil {
80 return nil, err
81 }
82 var hardware types.HardWare
83 err = json.Unmarshal([]byte(resource.Resources), &hardware)
84 if err != nil {
85 return nil, fmt.Errorf("invalid hardware setting, %w", err)
86 }
87 _, err = c.deployer.CheckResourceAvailable(ctx, req.ClusterID, &hardware)
88 if err != nil {
89 return nil, fmt.Errorf("fail to check resource, %w", err)
90 }
91
92 _, dbRepo, err := c.CreateRepo(ctx, req.CreateRepoReq)
93 if err != nil {
94 return nil, err
95 }
96
97 dbSpace := database.Space{
98 RepositoryID: dbRepo.ID,
99 Sdk: req.Sdk,
100 SdkVersion: req.SdkVersion,
101 CoverImageUrl: req.CoverImageUrl,
102 Env: req.Env,
103 Hardware: resource.Resources,
104 Secrets: req.Secrets,
105 SKU: strconv.FormatInt(resource.ID, 10),
106 }
107
108 resSpace, err := c.ss.Create(ctx, dbSpace)
109 if err != nil {
110 slog.Error("fail to create space in db", slog.Any("req", req), slog.String("error", err.Error()))
111 return nil, fmt.Errorf("fail to create space in db, error: %w", err)
112 }
113
114 // Create README.md file
115 err = c.git.CreateRepoFile(buildCreateFileReq(&types.CreateFileParams{
116 Username: dbRepo.User.Username,
117 Email: dbRepo.User.Email,
118 Message: initCommitMessage,
119 Branch: req.DefaultBranch,
120 Content: req.Readme,
121 NewBranch: req.DefaultBranch,
122 Namespace: req.Namespace,

Callers

nothing calls this directly

Calls 7

generateReadmeDataFunction · 0.85
buildCreateFileReqFunction · 0.85
ErrorMethod · 0.80
CreateRepoMethod · 0.65
CreateRepoFileMethod · 0.65
FindByIDMethod · 0.45

Tested by

no test coverage detected