(ctx context.Context, req *SkillImportRequest, permissionGroupIDs []int64)
| 235 | } |
| 236 | |
| 237 | func (s *SkillLibraryService) submitSkillImportJob(ctx context.Context, req *SkillImportRequest, permissionGroupIDs []int64) (*SkillImportResult, error) { |
| 238 | if req == nil { |
| 239 | return nil, ErrSkillImportRequestInvalid |
| 240 | } |
| 241 | |
| 242 | payload := &SkillImportJobPayload{ |
| 243 | SourceType: strings.TrimSpace(req.SourceType), |
| 244 | UploadFileID: strings.TrimSpace(req.UploadFileID), |
| 245 | GithubURL: strings.TrimSpace(req.GithubURL), |
| 246 | Ref: strings.TrimSpace(req.Ref), |
| 247 | SkillPath: strings.TrimSpace(req.SkillPath), |
| 248 | PermissionGroupIDs: normalizePermissionGroupIDs(permissionGroupIDs), |
| 249 | } |
| 250 | payloadBytes, err := json.Marshal(payload) |
| 251 | if err != nil { |
| 252 | return nil, err |
| 253 | } |
| 254 | |
| 255 | job := &model.SkillScanJob{ |
| 256 | Eid: req.Eid, |
| 257 | Status: model.SkillScanJobStatusPending, |
| 258 | ScanPayload: string(payloadBytes), |
| 259 | Message: "导入任务已提交", |
| 260 | RetryCount: 0, |
| 261 | StartedTime: 0, |
| 262 | FinishedTime: 0, |
| 263 | } |
| 264 | if err := model.DB.Create(job).Error; err != nil { |
| 265 | return nil, err |
| 266 | } |
| 267 | |
| 268 | s.RunAsyncImportJob(context.Background(), job.ID) |
| 269 | |
| 270 | return &SkillImportResult{ |
| 271 | ScanJobID: job.ID, |
| 272 | ScanStatus: job.Status, |
| 273 | }, nil |
| 274 | } |
| 275 | |
| 276 | func normalizeSkillImportRequest(req *SkillImportRequest) error { |
| 277 | if req == nil { |
no test coverage detected