(ctx context.Context, req types.CreateSpaceReq)
| 63 | } |
| 64 | |
| 65 | func (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, |
nothing calls this directly
no test coverage detected