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

Method createLocalDataset

component/multi_sync.go:169–294  ·  view source on GitHub ↗
(ctx context.Context, m *types.Dataset, s types.SyncVersion, sc multisync.Client)

Source from the content-addressed store, hash-verified

167}
168
169func (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,

Callers 1

SyncAsClientMethod · 0.95

Calls 13

getUserMethod · 0.95
createUserMethod · 0.95
AddPrefixBySourceIDFunction · 0.92
ConvertDotToSlashFunction · 0.92
UpdateOrCreateRepoMethod · 0.80
FindOrCreateMethod · 0.80
ErrorMethod · 0.80
DeleteAllTagsMethod · 0.80
BatchCreateRepoTagsMethod · 0.80
DeleteAllFilesMethod · 0.80
FileListMethod · 0.65
BatchCreateMethod · 0.45

Tested by

no test coverage detected