Ajouter le modèle et le DAO des relations entre entités #55
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ajouter le modèle et le DAO des relations entre entités
Contexte
Les entités OSINT peuvent être reliées entre elles afin de représenter les
liens découverts pendant une enquête.
Exemples :
Ces relations seront ensuite utilisées par le futur graphe interactif de
l'enquête.
Les données métier des relations doivent rester indépendantes de leur future
représentation graphique. Les coordonnées, dimensions et paramètres
d'affichage des nœuds ne doivent donc pas être ajoutés au modèle métier.
La table SQLite
relationsexiste déjà dans le schéma V1.Objectif
Ajouter un modèle métier
RelationRecordet un DAORelationDaopermettantde créer et de consulter les relations persistées entre les entités.
Modèle
RelationRecordCréer :
include/models/relation_record.hsrc/models/relation_record.cLe modèle doit être opaque et posséder les champs suivants :
identifier: UUID de la relation ;source_entity_identifier: UUID de l'entité source ;target_entity_identifier: UUID de l'entité cible ;relation_type: code métier décrivant la relation ;label: libellé facultatif ;justification: justification facultative ;confidence: niveau de confiance compris entre 0 et 100 ;created_at: date UTC de création ;updated_at: date UTC de dernière modification ;status: statut métier de la relation.Créer l'énumération suivante :
RELATION_STATUS_UNKNOWNRELATION_STATUS_ACTIVERELATION_STATUS_ARCHIVEDRELATION_STATUS_DELETEDRELATION_STATUS_DISPUTEDRELATION_STATUS_UNKNOWNdoit uniquement servir de valeur défensive et nedoit jamais être persisté.
Validations du modèle
Le constructeur doit :
NULL;NULL;La fonction de destruction doit accepter
NULL.Tous les accesseurs doivent accepter un modèle
NULLet retourner une valeurdéfensive cohérente.
DAO
RelationDaoCréer :
include/dao/relation_dao.hsrc/dao/relation_dao.cLe DAO doit emprunter une connexion
Databaseexistante et ne jamais lafermer.
Il doit exposer les opérations suivantes :
Construction
Destruction
Insertion
L'insertion doit :
Recherche par identifiant
Une relation absente doit retourner
NULLsans produire d'erreur.Liste complète
Le tableau doit :
RelationRecord;relation_record_free()comme fonction de destruction ;created_at, puis par UUID ;Comptage
Gestion des erreurs
Créer un domaine d'erreur propre à chaque composant :
RELATION_RECORD_ERRORRELATION_DAO_ERRORLe DAO doit différencier au minimum :
Les statements SQLite doivent être finalisés sur tous les chemins de sortie.
Tests du modèle
Créer :
Les tests doivent couvrir au minimum :
NULL;NULL.Tests du DAO
Créer :
Les tests doivent utiliser une base SQLite temporaire initialisée avec le
schéma réel de l'application.
Ils doivent couvrir au minimum :
A vers BetB vers A;Makefile
Ajouter les deux exécutables de test :
Ils doivent être :
make test;make test;make clean.La compilation doit conserver :
Hors périmètre
Ce ticket ne couvre pas :
relation_preuves;L'association entre relations et preuves fera l'objet d'un ticket séparé.
Critères d'acceptation
RelationRecordest opaque et valide les règles du schéma.RelationDaoemprunte correctement la connexionDatabase.make clean && make && make testréussit.git diff --checkne retourne aucune erreur.