Je me suis retrouvé confronté à un problème de synchronisation des base de données clients. Et je n'avais aucun outils pour vérifier si l'instance du client était bel est bien valide.
A Faire :
-
Gestion des
FOREIGN KEY
(dépends du moteur de stockage). -
Créer la class
MysqlDatabase
afin de gérer les montés de version de mysql exemple les index fulltext n'était pas gérer en innodb sur les versions antérieurs à 5.6 -
Permettre d'ignorer certaines tables.
-
Permettre d'ignorer certaines colonnes.
-
Permettre d'ignorer certains index.
-
Permettre la modification de colonne. (Ajout, modification, suppression, rename)
-
Vérifier les exports json/objet suite à la création de
MysqlDatabase
. -
Gérer pour la version de mysql 5.5 default current_timestamp => default now() update default now()
Terminé :
-
Générer l'object depuis un fichier JSON.
-
Générer l'object depuis une base de données.
-
Conversion des
ENUM('0','1')
enTYINT(1)
. -
Génération du diff entre deux objets.
-
Gestion sensitive de la casse.
-
Intégrer le check de
collate
. -
Création des index
FULLTEXT
. -
Check moteur de stockage
-
Gérer les
DROP COLUMNS
. -
Une fois la gestion des
DROP
etREMOVE COLUMNS
effecutées, permettre au logiciel de n'être qu'en création only via une configuration. -
Suppresion des index avant un
ALTER COLUMN
. -
Vérifier les datas de certaines table (Ex: La liste des civilités possibles).
-
Ajouter des optimisations de structure (Ex:
TEXT
,BLOB
dans une table avec beaucoup d'entrée). -
Suggestion d'index.
-
A partir d'une requête SQL vérifier que les index soit définit.
// watcher
gulp start
// lance les tests unitaires (nécessite phpunit)
gulp phpunit
// prépare le projet pour la production
gulp build
// permet de générer la couverture du code (nécessite xdebug/phpuni)
gulp coverage