MCPcopy Create free account
hub / github.com/devaccuracy/ledgerforge / UploadExternalData

Function UploadExternalData

internal/files/files.go:64–87  ·  view source on GitHub ↗

UploadExternalData handles the process of uploading external data by detecting file type, parsing, and storing it. Parameters: - ctx: The context for controlling execution. - source: The source of the external data. - reader: An io.Reader for reading the data. - filename: The name of the file being

(ctx context.Context, source string, reader io.Reader, filename string, store StoreFunc)

Source from the content-addressed store, hash-verified

62// - int: The total number of records processed.
63// - error: If any step of the process fails.
64func UploadExternalData(ctx context.Context, source string, reader io.Reader, filename string, store StoreFunc) (string, int, error) {
65 uploadID := model.GenerateUUIDWithSuffix("upload")
66
67 // Use buffered reader for better I/O performance
68 bufferedReader := bufio.NewReaderSize(reader, DefaultBufferSize)
69
70 tempFile, err := createAndPopulateTempFile(filename, bufferedReader)
71 if err != nil {
72 return "", 0, err
73 }
74 defer cleanupTempFile(tempFile)
75
76 fileType, err := detectFileTypeFromTempFile(tempFile, filename)
77 if err != nil {
78 return "", 0, err
79 }
80
81 total, err := parseAndStoreData(ctx, uploadID, source, tempFile, fileType, store)
82 if err != nil {
83 return "", 0, err
84 }
85
86 return uploadID, total, nil
87}
88
89func createAndPopulateTempFile(filename string, reader io.Reader) (*os.File, error) {
90 tempFile, err := createTempFile(filename)

Callers 1

UploadExternalDataMethod · 0.92

Calls 5

GenerateUUIDWithSuffixFunction · 0.92
cleanupTempFileFunction · 0.85
parseAndStoreDataFunction · 0.85

Tested by

no test coverage detected