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
+115
View File
@@ -353,6 +353,121 @@ func TestGetFolderDocuments_EmptyFolder(t *testing.T) {
assert.Len(t, resp.Documents, 0)
}
// TestGetFolderDocuments_IncludesFileSize verifies that file sizes are returned
// in the folder documents response when documents have file_size_bytes set.
func TestGetFolderDocuments_IncludesFileSize(t *testing.T) {
ctrl, cfg, clientID := setupFoldersTestController(t)
ctx := t.Context()
// Create folder
folderRec, err := cfg.GetDBQueries().CreateFolder(ctx, &repository.CreateFolderParams{
Path: "/documents-with-sizes",
Clientid: clientID,
Createdby: "admin@example.com",
})
require.NoError(t, err)
// Create documents with file sizes
filename1 := "small-doc.pdf"
fileSize1 := int64(1024) // 1KB
docID1, err := cfg.GetDBQueries().CreateDocument(ctx, &repository.CreateDocumentParams{
Clientid: clientID,
Hash: fmt.Sprintf("sizehash1-%s", uuid.New().String()[:8]),
Filename: &filename1,
Folderid: &folderRec.ID,
FileSizeBytes: &fileSize1,
})
require.NoError(t, err)
filename2 := "large-doc.pdf"
fileSize2 := int64(5242880) // 5MB
docID2, err := cfg.GetDBQueries().CreateDocument(ctx, &repository.CreateDocumentParams{
Clientid: clientID,
Hash: fmt.Sprintf("sizehash2-%s", uuid.New().String()[:8]),
Filename: &filename2,
Folderid: &folderRec.ID,
FileSizeBytes: &fileSize2,
})
require.NoError(t, err)
e := echo.New()
req := httptest.NewRequest(http.MethodGet, fmt.Sprintf("/folders/%s/documents", folderRec.ID), nil)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
err = ctrl.GetFolderDocuments(c, openapi_types.UUID(folderRec.ID), queryapi.GetFolderDocumentsParams{})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
var resp struct {
Documents []queryapi.DocumentInFolder `json:"documents"`
}
err = json.Unmarshal(rec.Body.Bytes(), &resp)
require.NoError(t, err)
assert.Len(t, resp.Documents, 2)
// Build a map of document ID to file size for verification
docSizes := make(map[uuid.UUID]*int64)
for _, doc := range resp.Documents {
docSizes[uuid.UUID(doc.Id)] = doc.FileSizeBytes
}
// Verify file sizes are present and correct
require.NotNil(t, docSizes[docID1], "document 1 should have file size")
assert.Equal(t, fileSize1, *docSizes[docID1], "document 1 file size should be 1024")
require.NotNil(t, docSizes[docID2], "document 2 should have file size")
assert.Equal(t, fileSize2, *docSizes[docID2], "document 2 file size should be 5242880")
}
// TestGetFolderDocuments_NilFileSize verifies that documents without file sizes
// (legacy documents) return nil for fileSizeBytes.
func TestGetFolderDocuments_NilFileSize(t *testing.T) {
ctrl, cfg, clientID := setupFoldersTestController(t)
ctx := t.Context()
// Create folder
folderRec, err := cfg.GetDBQueries().CreateFolder(ctx, &repository.CreateFolderParams{
Path: "/documents-no-sizes",
Clientid: clientID,
Createdby: "admin@example.com",
})
require.NoError(t, err)
// Create document WITHOUT file size (simulating legacy document)
filename := "legacy-doc.pdf"
docID, err := cfg.GetDBQueries().CreateDocument(ctx, &repository.CreateDocumentParams{
Clientid: clientID,
Hash: fmt.Sprintf("legacyhash-%s", uuid.New().String()[:8]),
Filename: &filename,
Folderid: &folderRec.ID,
FileSizeBytes: nil, // No file size
})
require.NoError(t, err)
e := echo.New()
req := httptest.NewRequest(http.MethodGet, fmt.Sprintf("/folders/%s/documents", folderRec.ID), nil)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
err = ctrl.GetFolderDocuments(c, openapi_types.UUID(folderRec.ID), queryapi.GetFolderDocumentsParams{})
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
var resp struct {
Documents []queryapi.DocumentInFolder `json:"documents"`
}
err = json.Unmarshal(rec.Body.Bytes(), &resp)
require.NoError(t, err)
require.Len(t, resp.Documents, 1)
// Verify file size is nil for the legacy document
assert.Equal(t, docID, uuid.UUID(resp.Documents[0].Id))
assert.Nil(t, resp.Documents[0].FileSizeBytes, "legacy document should have nil file size")
}
func TestGetFolderMetrics_Success(t *testing.T) {
ctrl, cfg, clientID := setupFoldersTestController(t)
ctx := t.Context()