Ce projet est un utilitaire qui permet une gestion efficace et facile de la base de donnée de l'application [Color Recipes Explorer](https://git.fyloz.dev/color-recipes-explorer). Le but premier était de séparer la gestion de la base de donnée de l'application principale. ## Fonctionnalités ### Vérification de la version de la base de donnée Cet utilitaire permet à l'application de vérifier la version de la base de donnée et ainsi empêcher son démarrage si la base de donnée n'est pas compatible avec la version de l'application. ### Mise à jour de la base de donnée Cet utilitaire permet de mettre à jour la base de donnée vers une version donnée. ### API Kotlin L'application utilise cet API pour vérifier la version de la base de donnée et pour permettre une mise à jour semi-automatique de la base de donnée. ## Versions de la base de donnée * `0`: Avant la création de la base de donnée * `1`: Avant l'implémentation d'un API REST * `2`: Après l'implémentation d'un API REST ## Utilisation autonome ### Prérequis * Gradle 6.8 ou supérieur * Java 11 ou supérieur * Le driver JDBC pour votre système de base de donnée (ex: `mysql-connector-java` pour MySQL) ### Actions * Vérifier la version de la base de donnée: `versionCheck` * Mettre à jour la base de donnée: `update` ### Étapes **Note: Les étapes assument que vous utilisez un système d'exploitation Linux.** 1. Cloner le projet: `git clone https://git.fyloz.dev/color-recipes-explorer/database-manager.git && cd database-manager` 2. Compiler un _shadow jar_: `gradle shadowJar` 3. Naviguer dans le dossier de compilation: `cd build/libs` 4. Créer le fichier de configuration ([exemple](https://git.fyloz.dev/color-recipes-explorer/database-manager/-/blob/master/README.md#exemple-de-fichier-de-configuration)) 5. Exécuter l'utilitaire: `java -cp database-manager--all.jar:.jar dev.fyloz.colorrecipesexplorer.databasemanager.DatabaseUpdaterKt ` ## Exemple de fichier de configuration ``` database.target-version=2 # Voir "Versions de la base de donnée" database.url=jdbc:mysql://host/ database.name=database database.username=user database.password=pass ```