mirror of https://github.com/langgenius/dify.git
19 lines
1013 B
Markdown
19 lines
1013 B
Markdown
## Purpose
|
|
|
|
`api/services/dataset_service.py` hosts dataset/document service logic used by console and API controllers.
|
|
|
|
## Batch document operations
|
|
|
|
- Batch document workflows should avoid N+1 database queries by using set-based lookups.
|
|
- Tenant checks must be enforced consistently across dataset/document operations.
|
|
- `DocumentService.get_documents_by_ids(...)` fetches documents for a dataset using `id.in_(...)`.
|
|
- `FileService.get_upload_files_by_ids(...)` performs tenant-scoped batch lookup for `UploadFile` (dedupes ids with `set(...)`).
|
|
- `DocumentService.get_document_download_url(...)` and `prepare_document_batch_download_zip(...)` handle
|
|
dataset/document permission checks plus `Document -> UploadFile` validation for download endpoints.
|
|
|
|
## Verification plan
|
|
|
|
- Exercise document list and download endpoints that use the service helpers.
|
|
- Confirm batch download uses constant query count for documents + upload files.
|
|
- Request a ZIP with a missing document id and confirm a 404 is returned.
|