labfy-investigation/include/core/exiftool_persistence_service.h
fy59 d65f9559e6 chore(checkpoint): preserve local investigation workbench
Preserve the local graph-first investigation stack through macro V1.

Include reviewed source, tests, contracts, documentation and synthetic assets.

Retain the standalone financial V21 test foundation without runtime migration.

Runtime remains V20; operational JobStore remains V3.

Local experimental checkpoint, not a stable release.
2026-09-27 08:34:46 +02:00

46 lines
1.7 KiB
C

/******************************************************************************
* @file exiftool_persistence_service.h
* @brief Publication V20 d'une analyse ExifTool issue du registre J4.
******************************************************************************/
#ifndef LABFY_INVESTIGATION_EXIFTOOL_PERSISTENCE_SERVICE_H
#define LABFY_INVESTIGATION_EXIFTOOL_PERSISTENCE_SERVICE_H
#include "core/local_capability_registry.h"
#include "database/database.h"
G_BEGIN_DECLS
#define EXIFTOOL_ARTIFACT_CONTRACT "labfy.exiftool.metadata.derivative.v1"
#define EXIFTOOL_PERSISTENCE_MAX_SOURCE (16U * 1024U * 1024U)
typedef struct ExiftoolPersistenceService ExiftoolPersistenceService;
typedef struct {
const char *request_identifier;
const char *source_evidence_identifier;
const char *derivative_evidence_identifier;
const char *requested_at;
} ExiftoolPersistenceRequest;
typedef struct {
char *request_identifier;
char *derivative_evidence_identifier;
char *tool_version;
guint metadata_count;
gboolean reused;
char *status;
} ExiftoolPublicationResult;
ExiftoolPersistenceService *exiftool_persistence_service_new(
Database *database, const char *investigation_root,
const LocalCapabilityRegistry *registry, GError **error);
void exiftool_persistence_service_free(ExiftoolPersistenceService *service);
/** Exécute via le registre puis publie ; aucun résultat partiel n'est publié. */
ExiftoolPublicationResult *exiftool_persistence_service_execute(
ExiftoolPersistenceService *service,
const ExiftoolPersistenceRequest *request,
GCancellable *cancellable,
GError **error);
void exiftool_publication_result_free(ExiftoolPublicationResult *result);
G_END_DECLS
#endif