Enhance company document management with file ID sanitization and detachment functionality
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
- Updated the `UploadDocuments` method to sanitize document file IDs before saving, ensuring only valid references are stored. - Introduced `DetachDocumentFileID` method in the `companyService` to remove file IDs from all companies referencing a deleted file, improving data integrity. - Enhanced the `companyRepository` with a new method to handle the removal of document file IDs from the database. - Updated the `filestore` handler to utilize the new detachment functionality when files are deleted, ensuring consistent state across domain entities. This update improves the management of document file IDs within the company domain, enhancing data integrity and reference handling.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package filestore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@@ -11,17 +12,24 @@ import (
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
// DocumentReferenceCleaner removes stored file IDs from domain entities when a file is deleted.
|
||||
type DocumentReferenceCleaner interface {
|
||||
DetachDocumentFileID(ctx context.Context, fileID string) error
|
||||
}
|
||||
|
||||
// Handler handles HTTP requests for file operations
|
||||
type Handler struct {
|
||||
service FileStoreService
|
||||
logger logger.Logger
|
||||
service FileStoreService
|
||||
logger logger.Logger
|
||||
referenceCleaner DocumentReferenceCleaner
|
||||
}
|
||||
|
||||
// NewHandler creates a new file handler
|
||||
func NewHandler(service FileStoreService, logger logger.Logger) *Handler {
|
||||
func NewHandler(service FileStoreService, logger logger.Logger, referenceCleaner DocumentReferenceCleaner) *Handler {
|
||||
return &Handler{
|
||||
service: service,
|
||||
logger: logger,
|
||||
service: service,
|
||||
logger: logger,
|
||||
referenceCleaner: referenceCleaner,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -417,6 +425,15 @@ func (h *Handler) Delete(c echo.Context) error {
|
||||
})
|
||||
}
|
||||
|
||||
if h.referenceCleaner != nil {
|
||||
if cleanErr := h.referenceCleaner.DetachDocumentFileID(c.Request().Context(), fileID); cleanErr != nil {
|
||||
h.logger.Warn("Failed to detach deleted file from domain references", map[string]interface{}{
|
||||
"file_id": fileID,
|
||||
"error": cleanErr.Error(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, map[string]string{
|
||||
"message": "File deleted successfully",
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user