labfy-investigation/include/database/schema.h
2026-07-30 11:10:32 +02:00

122 lines
3.5 KiB
C

/******************************************************************************
* @file schema.h
* @brief Interface interne d'installation du schéma SQLite.
******************************************************************************/
#ifndef LABFY_INVESTIGATION_SCHEMA_H
#define LABFY_INVESTIGATION_SCHEMA_H
#include "database/database.h"
#include <stdbool.h>
/**
* @brief Installe le schéma SQLite V1 dans une base ouverte.
*
* La connexion doit être valide et une transaction doit déjà être active.
*
* Cette fonction crée :
*
* - les tables ;
* - les index ;
* - les valeurs de référence.
*
* Elle ne réalise ni COMMIT ni ROLLBACK.
*
* @param database Connexion Database ouverte.
*
* @return true si le schéma a été correctement installé, sinon false.
*/
bool schema_install_v1(
Database *database
);
/**
* @brief Installe les modifications du schéma SQLite V2.
*
* La connexion doit être valide et une transaction doit déjà être active.
*
* Cette fonction :
*
* - étend la table preuves ;
* - conserve les éventuelles lignes V1 ;
* - ajoute les contraintes nécessaires aux nouvelles preuves ;
* - ajoute les index V2.
*
* Elle ne modifie pas elle-même la version enregistrée dans metadata.
* Elle ne réalise ni COMMIT ni ROLLBACK.
*
* @param database Connexion Database ouverte.
*
* @return true si la migration V2 a été appliquée, sinon false.
*/
bool schema_install_v2(
Database *database
);
/**
* @brief Installe la migration de provenance OSINT du schéma V3.
*
* La connexion doit être valide et une transaction doit déjà être active.
* La fonction ne réalise ni COMMIT ni ROLLBACK.
*
* @param database Connexion Database ouverte.
*
* @return true si la migration V3 a été appliquée, sinon false.
*/
bool schema_install_v3(
Database *database
);
/**
* @brief Installe la migration des comptes sociaux du schéma V4.
*
* La connexion doit être valide et une transaction doit déjà être active.
* La fonction ne réalise ni COMMIT ni ROLLBACK.
*
* @param database Connexion Database ouverte.
* @return true si la migration V4 a été appliquée, sinon false.
*/
bool schema_install_v4(
Database *database
);
/** @brief Installe la migration des rôles de personnes du schéma V5. */
bool schema_install_v5(Database *database);
/** @brief Installe la catégorie d'identité usurpée du schéma V6. */
bool schema_install_v6(Database *database);
bool schema_install_v7(Database *database);
bool schema_install_v8(Database *database);
bool schema_install_v9(Database *database);
bool schema_install_v10(Database *database);
bool schema_install_v11(Database *database);
bool schema_install_v12(Database *database);
bool schema_install_v13(Database *database);
bool schema_install_v14(Database *database);
bool schema_install_v15(Database *database);
bool schema_install_v16(Database *database);
bool schema_install_v17(Database *database);
bool schema_install_v18(Database *database);
/**
* @brief Garantit la présence des extensions du schéma courant V2.
*
* La connexion doit être valide et une transaction doit déjà être active.
*
* Cette fonction applique uniquement des opérations idempotentes destinées
* aux nouvelles bases comme aux bases V2 déjà existantes.
*
* Elle ne modifie pas la version enregistrée dans metadata.
* Elle ne réalise ni COMMIT ni ROLLBACK.
*
* @param database Connexion Database ouverte.
*
* @return true si les extensions sont présentes, sinon false.
*/
bool schema_ensure_current(
Database *database
);
#endif