txs:contrib:framadate_a17:base_de_donnees

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
txs:framadate:base_de_donnees [2018/01/24 23:01] – [Comment ajouter un script pour modifier la base de données] titouantxs:contrib:framadate_a17:base_de_donnees [2020/09/16 11:24] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +==== 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 :
 +    - ajouter une ligne "use Framadate\Migration\VOTRENOMDECLASSE;"
 +    - 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 ====
 +<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;');
 +    }
 +}</code>
  • txs/contrib/framadate_a17/base_de_donnees.txt
  • de 127.0.0.1