42 lines
1.5 KiB
Go
42 lines
1.5 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"fileserver/config"
|
|
"fileserver/internal/models"
|
|
"fmt"
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// GetDocument retrieves a document from the database based on its `idFile` field.
|
|
// It searches for a document with the given `idFile` and returns the document if found, or an error if not.
|
|
func GetDocument(idFile uuid.UUID) (*models.Document, error) {
|
|
var document models.Document
|
|
|
|
// Perform the query to find the document by its unique `idFile` field
|
|
if err := config.DB.Where("id_file = ?", idFile).First(&document).Error; err != nil {
|
|
// If no record is found, return a descriptive error
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, fmt.Errorf("document with idFile %v not found", idFile)
|
|
}
|
|
// If there is another error during retrieval, return the error
|
|
return nil, fmt.Errorf("error while retrieving document: %v", err)
|
|
}
|
|
|
|
// Return the document found in the database
|
|
return &document, nil
|
|
}
|
|
|
|
// AddDocument adds a new document to the database.
|
|
// The function receives a pointer to a `Document` struct and attempts to insert it into the database.
|
|
func AddDocument(document *models.Document) error {
|
|
// Create a new record for the document in the database
|
|
if err := config.DB.Create(document).Error; err != nil {
|
|
// If an error occurs during the insert, return the error
|
|
return fmt.Errorf("error while adding document: %v", err)
|
|
}
|
|
// If the operation is successful, return nil (no error)
|
|
return nil
|
|
}
|