MCPcopy Create free account
hub / github.com/53AI/53AIHub / CreateBatch

Method CreateBatch

api/service/batch_upload_manager.go:195–261  ·  view source on GitHub ↗

CreateBatch 创建批量上传会话

(eid, userID int64, req *BatchInitRequest)

Source from the content-addressed store, hash-verified

193
194// CreateBatch 创建批量上传会话
195func (m *BatchUploadManager) CreateBatch(eid, userID int64, req *BatchInitRequest) (*BatchUpload, []DuplicateFileInfo, error) {
196 dirManager := NewDirectoryManager()
197 if err := dirManager.CreateDirectoryTree(eid, req.LibraryID, req.FileStructure, req.BasePath, userID, req.OriginType, req.OriginSource, req.OriginRefID); err != nil {
198 return nil, nil, fmt.Errorf("创建目录结构失败: %v", err)
199 }
200
201 batchID := m.generateBatchID()
202 uploadToken := m.generateUploadToken()
203
204 files := make(map[string]*FileUpload)
205 var duplicateFiles []DuplicateFileInfo
206
207 for _, item := range req.FileStructure {
208 if !item.IsDirectory {
209 fileID := m.generateFileID()
210 files[fileID] = &FileUpload{
211 ID: fileID,
212 RelativePath: item.RelativePath,
213 Status: "queued",
214 Progress: 0,
215 TotalSize: item.Size,
216 StartTime: time.Now(),
217 UpdateTime: time.Now(),
218 SpeedHistory: make([]int64, 0),
219 }
220
221 filePath := dirManager.GetDirectoryPath(req.BasePath, item.RelativePath)
222 if shouldAppendMarkdownSuffix() && filepath.Ext(filePath) != ".md" {
223 filePath += ".md"
224 }
225 existingFile, err := model.GetFileByPathAndLibraryNotDeleted(eid, req.LibraryID, filePath)
226 if err == nil && existingFile != nil {
227 duplicateFiles = append(duplicateFiles, DuplicateFileInfo{
228 RelativePath: item.RelativePath,
229 ExistingID: existingFile.ID,
230 })
231 }
232 }
233 }
234
235 batch := &BatchUpload{
236 ID: batchID,
237 LibraryID: req.LibraryID,
238 UserID: userID,
239 EID: eid,
240 Status: "init",
241 TotalFiles: req.TotalFiles,
242 UploadedFiles: 0,
243 FailedFiles: 0,
244 Files: files,
245 UploadToken: uploadToken,
246 BasePath: req.BasePath,
247 OriginType: strings.TrimSpace(req.OriginType),
248 OriginSource: strings.TrimSpace(req.OriginSource),
249 OriginRefID: req.OriginRefID,
250 CreatedAt: time.Now(),
251 UpdatedAt: time.Now(),
252 }

Callers

nothing calls this directly

Calls 10

CreateDirectoryTreeMethod · 0.95
generateBatchIDMethod · 0.95
generateUploadTokenMethod · 0.95
generateFileIDMethod · 0.95
GetDirectoryPathMethod · 0.95
NewDirectoryManagerFunction · 0.85
ErrorfMethod · 0.80
SaveBatchMethod · 0.80
UnlockMethod · 0.65

Tested by

no test coverage detected