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

Method Create

component/dataset.go:101–226  ·  view source on GitHub ↗
(ctx context.Context, req *types.CreateDatasetReq)

Source from the content-addressed store, hash-verified

99}
100
101func (c *DatasetComponent) Create(ctx context.Context, req *types.CreateDatasetReq) (*types.Dataset, error) {
102 var (
103 nickname string
104 tags []types.RepoTag
105 )
106
107 namespace, err := c.namespace.FindByPath(ctx, req.Namespace)
108 if err != nil {
109 return nil, errors.New("namespace does not exist")
110 }
111
112 user, err := c.user.FindByUsername(ctx, req.Username)
113 if err != nil {
114 return nil, errors.New("user does not exist")
115 }
116 if !user.CanAdmin() {
117 if namespace.NamespaceType == database.OrgNamespace {
118 canWrite, err := c.checkCurrentUserPermission(ctx, req.Username, req.Namespace, membership.RoleWrite)
119 if err != nil {
120 return nil, err
121 }
122 if !canWrite {
123 return nil, errors.New("users do not have permission to create datasets in this organization")
124 }
125 } else {
126 if namespace.Path != user.Username {
127 return nil, errors.New("users do not have permission to create datasets in this namespace")
128 }
129 }
130 }
131
132 if req.Nickname != "" {
133 nickname = req.Nickname
134 } else {
135 nickname = req.Name
136 }
137
138 if req.DefaultBranch == "" {
139 req.DefaultBranch = "main"
140 }
141
142 req.RepoType = types.DatasetRepo
143 req.Readme = generateReadmeData(req.License)
144 req.Nickname = nickname
145 _, dbRepo, err := c.CreateRepo(ctx, req.CreateRepoReq)
146 if err != nil {
147 return nil, err
148 }
149
150 dbDataset := database.Dataset{
151 Repository: dbRepo,
152 RepositoryID: dbRepo.ID,
153 }
154
155 dataset, err := c.ds.Create(ctx, dbDataset)
156 if err != nil {
157 return nil, fmt.Errorf("failed to create database dataset, cause: %w", err)
158 }

Callers

nothing calls this directly

Calls 9

BuildCloneInfoFunction · 0.92
generateReadmeDataFunction · 0.85
buildCreateFileReqFunction · 0.85
FindByUsernameMethod · 0.80
CreateRepoMethod · 0.65
CreateRepoFileMethod · 0.65
FindByPathMethod · 0.45
CanAdminMethod · 0.45

Tested by

no test coverage detected