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

Method Save

api/model/file.go:450–515  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

448}
449
450func (file *File) Save() error {
451 pathStr := file.GetPath()
452 if pathStr == "" {
453 return errors.New("file path is empty")
454 }
455 if file.Type == FILE_TYPE_FILE {
456 if path.Ext(pathStr) == "" {
457 return errors.New("file path must contain filename and extension")
458 }
459 }
460 if file.Type == FILE_TYPE_DIR {
461 cleanPath := path.Clean(pathStr)
462 isDirBool := isDir(cleanPath)
463 if !isDirBool {
464 return errors.New("file path is not a directory")
465 }
466 }
467
468 // 检查路径是否已存在(在同一知识库内)- 不再检查,直接创建
469 // existingFile, err := GetFileByPathAndLibrary(file.Eid, file.LibraryID, pathStr)
470 // if err == nil && existingFile != nil {
471 // return errors.New("file path already exists in this library")
472 // }
473
474 file.Path = pathStr
475 if strings.TrimSpace(file.OriginType) == "" {
476 if file.UploadFileID > 0 {
477 file.SetPersonalUploadOrigin(file.UploadFileID)
478 } else {
479 file.SetManualCreateOrigin()
480 if library, err := GetLibraryByID(file.Eid, file.LibraryID); err == nil && library != nil && library.IsPersonalLibrary() {
481 file.OriginSource = FileOriginSourceLocal
482 }
483 }
484 } else if file.OriginType == FileOriginTypeManualCreate {
485 file.OriginRefID = 0
486 if library, err := GetLibraryByID(file.Eid, file.LibraryID); err == nil && library != nil && library.IsPersonalLibrary() {
487 file.OriginSource = FileOriginSourceLocal
488 } else if strings.TrimSpace(file.OriginSource) == "" {
489 file.OriginSource = FileOriginSourceDirect
490 }
491 } else if file.OriginType == FileOriginTypePersonalUpload && strings.TrimSpace(file.OriginSource) == "" {
492 file.OriginSource = FileOriginSourceLocal
493 } else if file.IsRecordingOriginType() && strings.TrimSpace(file.OriginSource) == "" {
494 if file.OriginType == FileOriginTypeRecordingImported {
495 file.OriginSource = FileOriginSourceRecordingImport
496 } else {
497 file.OriginSource = FileOriginSourceRecording
498 }
499 }
500 // 统一默认状态:若为空则填充为 normal(应用层规范化,避免依赖DB默认)
501 if strings.TrimSpace(file.ConversionStatus) == "" {
502 file.ConversionStatus = FileConversionStatusNormal
503 }
504 if strings.TrimSpace(file.ParsingStatus) == "" {
505 file.ParsingStatus = FileParsingStatusNormal
506 }
507 result := DB.Create(file)

Callers 10

CreateFileFunction · 0.95
CreateDirectoryTreeMethod · 0.95
createDirectoryRecordMethod · 0.95
CreateFileRecordMethod · 0.95
ensureDirectoryChainMethod · 0.95
SyncUploadedFileMethod · 0.95
CreateFileOrFolderMethod · 0.95

Calls 10

GetPathMethod · 0.95
SetManualCreateOriginMethod · 0.95
IsRecordingOriginTypeMethod · 0.95
isDirFunction · 0.85
GetLibraryByIDFunction · 0.85
IsPersonalLibraryMethod · 0.80
NewMethod · 0.45
CreateMethod · 0.45

Tested by

no test coverage detected