(ctx context.Context, req *types.CreateDatasetReq)
| 99 | } |
| 100 | |
| 101 | func (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 | } |
nothing calls this directly
no test coverage detected