Merged in feature/track-filesize (pull request #200)

track file sizes for all documents in system

* feature complete

needs dev testing
This commit is contained in:
Jay Brown
2026-01-12 17:46:07 +00:00
parent 4ad8168f35
commit ebf47c6013
37 changed files with 1514 additions and 374 deletions
+80
View File
@@ -627,6 +627,86 @@ func TestUploadDocumentBatch_Part1_TooLarge(t *testing.T) {
assert.Contains(t, httpErr.Message, "file too large")
}
// TestGetDocument_IncludesFileSize verifies that file sizes are returned
// in the document response when documents have file_size_bytes set.
func TestGetDocument_IncludesFileSize(t *testing.T) {
cfg := &ControllerConfig{}
test.CreateDB(t, cfg)
initializeTestConfig(t, cfg)
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc, cfg)
// Create test client with root folder (unique ID to avoid conflicts)
clientID := fmt.Sprintf("filesize_client_%s", uuid.New().String()[:8])
test.CreateTestClient(t, cfg, clientID, "FileSize Client")
// Create document with file size
filename := "measured-doc.pdf"
fileSize := int64(1048576) // 1MB
docId, err := cfg.GetDBQueries().CreateDocument(t.Context(), &repository.CreateDocumentParams{
Clientid: clientID,
Hash: fmt.Sprintf("filesizehash-%s", uuid.New().String()[:8]),
Filename: &filename,
FileSizeBytes: &fileSize,
})
require.NoError(t, err)
ctx, rec := createContext(t)
err = cons.GetDocument(ctx, docId, queryapi.GetDocumentParams{})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
var result queryapi.DocumentEnriched
err = json.Unmarshal(rec.Body.Bytes(), &result)
require.NoError(t, err)
// Verify file size is present and correct
assert.Equal(t, docId, result.Id)
require.NotNil(t, result.FileSizeBytes, "document should have file size")
assert.Equal(t, fileSize, *result.FileSizeBytes, "file size should be 1048576 (1MB)")
}
// TestGetDocument_NilFileSize verifies that documents without file sizes
// (legacy documents) return nil for fileSizeBytes.
func TestGetDocument_NilFileSize(t *testing.T) {
cfg := &ControllerConfig{}
test.CreateDB(t, cfg)
initializeTestConfig(t, cfg)
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc, cfg)
// Create test client with root folder (unique ID to avoid conflicts)
clientID := fmt.Sprintf("legacy_client_%s", uuid.New().String()[:8])
test.CreateTestClient(t, cfg, clientID, "Legacy Client")
// Create document WITHOUT file size (simulating legacy document)
filename := "legacy-document.pdf"
docId, err := cfg.GetDBQueries().CreateDocument(t.Context(), &repository.CreateDocumentParams{
Clientid: clientID,
Hash: fmt.Sprintf("legacyhash-%s", uuid.New().String()[:8]),
Filename: &filename,
FileSizeBytes: nil, // No file size
})
require.NoError(t, err)
ctx, rec := createContext(t)
err = cons.GetDocument(ctx, docId, queryapi.GetDocumentParams{})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
var result queryapi.DocumentEnriched
err = json.Unmarshal(rec.Body.Bytes(), &result)
require.NoError(t, err)
// Verify file size is nil for the legacy document
assert.Equal(t, docId, result.Id)
assert.Nil(t, result.FileSizeBytes, "legacy document should have nil file size")
}
// Helper function to create test ZIP with multiple PDFs
func createTestZIPFile(t *testing.T, pdfCount int) *bytes.Reader {
var buf bytes.Buffer