labfy-investigation/include/core/evidence_importer.h
2026-07-19 21:03:12 +02:00

132 lines
3.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************************************************************************
* @file evidence_importer.h
* @brief Orchestration de limport transactionnel des preuves.
******************************************************************************/
#ifndef LABFY_INVESTIGATION_EVIDENCE_IMPORTER_H
#define LABFY_INVESTIGATION_EVIDENCE_IMPORTER_H
#include "database/database.h"
#include "models/evidence_record.h"
#include <gio/gio.h>
#include <glib.h>
G_BEGIN_DECLS
/**
* @brief Catégories derreurs du module EvidenceImporter.
*/
typedef enum
{
EVIDENCE_IMPORTER_ERROR_INVALID_ARGUMENT,
EVIDENCE_IMPORTER_ERROR_MEMORY,
EVIDENCE_IMPORTER_ERROR_CANCELLED,
EVIDENCE_IMPORTER_ERROR_DESTINATION,
EVIDENCE_IMPORTER_ERROR_COPY,
EVIDENCE_IMPORTER_ERROR_MODEL,
EVIDENCE_IMPORTER_ERROR_DATABASE,
EVIDENCE_IMPORTER_ERROR_ROLLBACK
} EvidenceImporterError;
/**
* @brief Domaine derreurs du module EvidenceImporter.
*/
#define EVIDENCE_IMPORTER_ERROR \
evidence_importer_error_quark()
/**
* @brief Retourne le domaine derreurs du module.
*/
GQuark evidence_importer_error_quark(void);
/**
* @brief Service opaque orchestrant limport des preuves.
*
* Lobjet emprunte la connexion Database reçue à sa création.
*/
typedef struct EvidenceImporter EvidenceImporter;
/**
* @brief Paramètres empruntés dun import de preuve.
*
* Les chaînes restent la propriété de lappelant.
*
* source_path, destination_directory, relative_directory et
* type_identifier sont obligatoires.
*
* collected_at, source et description sont facultatifs.
*/
typedef struct
{
const char *source_path;
const char *destination_directory;
const char *relative_directory;
const char *type_identifier;
const char *collected_at;
const char *source;
const char *description;
} EvidenceImportRequest;
/**
* @brief Crée un service dimport utilisant une connexion existante.
*
* La connexion est empruntée et doit rester valide pendant toute la durée
* de vie de limporteur.
*
* @param database Connexion ouverte et migrée.
* @param error Adresse recevant une éventuelle erreur.
*
* @return Nouvel importeur, ou NULL.
*/
EvidenceImporter *evidence_importer_new(
Database *database,
GError **error
);
/**
* @brief Libère un importeur.
*
* La connexion Database empruntée nest pas fermée.
* Cette fonction accepte NULL.
*
* @param evidence_importer Importeur à libérer.
*/
void evidence_importer_free(
EvidenceImporter *evidence_importer
);
/**
* @brief Importe une preuve de manière transactionnelle.
*
* Après succès :
*
* - le fichier est présent dans lenquête ;
* - le modèle est enregistré dans SQLite ;
* - le EvidenceRecord retourné appartient à lappelant.
*
* Après échec :
*
* - aucun EvidenceRecord nest retourné ;
* - aucune transaction démarrée par limporteur ne reste active ;
* - toute copie créée par lopération est supprimée lorsque cela est
* encore possible.
*
* @param evidence_importer Service dimport.
* @param request Paramètres empruntés de limport.
* @param cancellable Objet dannulation facultatif.
* @param error Adresse recevant une éventuelle erreur.
*
* @return Nouveau EvidenceRecord, ou NULL.
*/
EvidenceRecord *evidence_importer_import(
EvidenceImporter *evidence_importer,
const EvidenceImportRequest *request,
GCancellable *cancellable,
GError **error
);
G_END_DECLS
#endif