Base de données

Dans nos tests, nous avons utilisé MySQL comme SGBD.

Les bases de données pour Framadate sont générées “en différentiel” : à partir de la base de données d'origine, on va exécuter plusieurs scripts PHP qui vont la modifier pour atteindre sa forme finale, il n'y a pas un unique script générant directement la base finale. Si vous souhaitez modifier la base de données, il vous faut implémenter une classe définie comme template située dans <dossier framadate>/app/classes/Framadate/Migration/migration.php

Pour pouvoir tester pour la première fois votre serveur (ie à chaque lancement du conteneur pour docker), il vous faudra lancer ces scripts. Pour cela, il faut ouvrir la page <domaine framadate>/admin/migration.php (accessible depuis <domaine framadate>/admin). Pour atteindre cette page, on vous demandera normalement un user/mdp. Celui-ci est décrit dans <dossier framadate>/app/inc/config.php (fichier modifié par le entrypoint.sh lors du déploiement docker, avec les paramètres précisés dans le docker-compose.yml)

Afin d'apporter une modification à la base de données, il faut créer un fichier de migration (en s'inspirant de ceux déjà présents) et ajouter ce fichier à la liste des migrations à réaliser dans le fichier framadate/admin/migration.php.

Comment ajouter un script pour modifier la base de données

dans le dossier framadate/app/classes/Framadate/Migration, copié-collé un fichier de migration en l'adaptant à vos besoins. dans le fichier /var/www/framadate/admin/migration.php :

  1. ajouter une ligne “use Framadate\Migration\VOTRENOMDECLASSE;”
  2. ajouter une ligne “new …(), new VOTRENOMDECLASSE()” à la fin du tableau $migration

puis lancer la migration en ouvrant la page PHP <domaine framadate>/admin/migration.php
le fichier va lancer successivement les scripts, et stocker dans sa base de données les succès, les échecs et ceux qui n'ont pas été lancés car appartenant déjà à la liste des scripts passés en succès

exemple de code

class VOTRENOMDECLASSE implements Migration {

    function __construct() {
    }

    function description() {
        return 'message décrivant la modification';
    }

    function preCondition(\PDO $pdo) {
        return true;
    }

    function execute(\PDO $pdo) {
        $this->VOTREFONCTION($pdo);

        return true;
    }

    private function VOTREFONCTION(\PDO $pdo) {
        //votre code SQL
        $pdo->exec('
        ALTER TABLE `' . Utils::table('NOMTABLE') . '`
        ADD `NOM COLONNE` LETYPEPOURLACOLONNE;');
    }
}
  • txs/framadate/base_de_donnees.txt
  • Dernière modification: 2018/02/21 20:37
  • par titouan