(ctx context.Context, m *types.Dataset, s types.SyncVersion, sc multisync.Client)
| 167 | } |
| 168 | |
| 169 | func (c *MultiSyncComponent) createLocalDataset(ctx context.Context, m *types.Dataset, s types.SyncVersion, sc multisync.Client) error { |
| 170 | namespace, name, _ := strings.Cut(m.Path, "/") |
| 171 | //add prefix to avoid namespace conflict |
| 172 | namespace = common.AddPrefixBySourceID(s.SourceID, namespace) |
| 173 | |
| 174 | //use namespace as the user login name |
| 175 | userName := namespace |
| 176 | var user database.User |
| 177 | user, err := c.getUser(ctx, userName) |
| 178 | if err != nil { |
| 179 | if err != sql.ErrNoRows { |
| 180 | return fmt.Errorf("fail to get user, userName:%s, error: %w", userName, err) |
| 181 | } |
| 182 | } |
| 183 | //user not exists, create new one |
| 184 | if user.ID == 0 { |
| 185 | //create as user instead of org, no matter if the namespace is org or user |
| 186 | user, err = c.createUser(ctx, types.CreateUserRequest{ |
| 187 | Name: m.User.Nickname, |
| 188 | Username: userName, |
| 189 | Email: common.AddPrefixBySourceID(s.SourceID, m.User.Email), |
| 190 | }) |
| 191 | if err != nil { |
| 192 | return fmt.Errorf("fail to create user for namespace, namespace:%s, error: %w", namespace, err) |
| 193 | } |
| 194 | } |
| 195 | //create new database repo |
| 196 | dbRepo := database.Repository{ |
| 197 | UserID: user.ID, |
| 198 | //new path with prefixed namespace |
| 199 | Path: path.Join(namespace, name), |
| 200 | GitPath: fmt.Sprintf("%ss_%s/%s", types.DatasetRepo, namespace, name), |
| 201 | Name: name, |
| 202 | Nickname: m.Nickname, |
| 203 | Description: m.Description, |
| 204 | Private: m.Private, |
| 205 | Readme: m.Readme, |
| 206 | // License: req.License, |
| 207 | // DefaultBranch: gitRepo.DefaultBranch, |
| 208 | RepositoryType: types.DatasetRepo, |
| 209 | Source: types.OpenCSGSource, |
| 210 | SyncStatus: types.SyncStatusPending, |
| 211 | // HTTPCloneURL: gitRepo.HttpCloneURL, |
| 212 | // SSHCloneURL: gitRepo.SshCloneURL, |
| 213 | } |
| 214 | newDBRepo, err := c.repo.UpdateOrCreateRepo(ctx, dbRepo) |
| 215 | if err != nil { |
| 216 | return fmt.Errorf("fail to create database repo, error: %w", err) |
| 217 | } |
| 218 | |
| 219 | if len(m.Tags) > 0 { |
| 220 | var repoTags []database.RepositoryTag |
| 221 | for _, tag := range m.Tags { |
| 222 | dbTag := database.Tag{ |
| 223 | Name: tag.Name, |
| 224 | Category: tag.Category, |
| 225 | Group: tag.Group, |
| 226 | BuiltIn: tag.BuiltIn, |
no test coverage detected