Tennis Match Management API est une application REST développée avec Spring Boot, Spring Web, Spring Data JPA, et PostgreSQL.
Elle permet de gérer les matchs de tennis, les joueurs, et d'obtenir des statistiques via une API REST.
🔹 Nouvelle fonctionnalité : Connexion à PostgreSQL via Docker avec gestion de la persistance des données.
- Java 17
- Spring Boot 3.4.2
- Spring Web (REST API)
- Spring Data JPA (Gestion des entités)
- PostgreSQL (Base de données relationnelle)
- Docker & Docker Compose (Gestion de l'environnement PostgreSQL)
- Maven (Gestionnaire de dépendances)
- HikariCP (Pool de connexion performant)
- Lombok (Réduction du boilerplate)
- Swagger OpenAPI (Documentation interactive)
- Java 21 installé (
java -version
pour vérifier) - Maven 3.9+ installé (
mvn -v
pour vérifier) - Docker & Docker Compose installés (
docker -v
pour vérifier)
Le projet utilise Docker Compose pour lancer PostgreSQL rapidement.
Depuis la racine du projet, lancez :
docker compose -f src/main/docker/postgresql.yml up -d
🤍 PostgreSQL sera disponible sur localhost:5432 avec persistance des données.
Note :
Les scripts d'initialisation situés danssrc/main/docker/init
(commeinit.sql
) s'exécutent uniquement lors du premier démarrage du container. Pour forcer leur réexécution (par exemple après correction d'un script), supprimez le dossier de donnéespostgres-data
:rm -rf src/main/docker/postgres-data docker compose -f src/main/docker/postgresql.yml up -d
docker compose -f src/main/docker/postgresql.yml down
🛠 Stoppe le container sans supprimer les données.
docker compose -f src/main/docker/postgresql.yml down --remove-orphans
🛠 Stoppe le container en supprimant le volume (les données).
docker compose -f src/main/docker/postgresql.yml up -d
🌟 Relance PostgreSQL avec toutes les données précédentes.
Pour vous assurer que PostgreSQL fonctionne correctement et que le script d'initialisation s'est bien exécuté :
Utilisez la commande suivante pour afficher les logs du container et rechercher d'éventuelles erreurs :
docker logs postgresql
Recherchez des messages confirmant l'exécution des scripts d'initialisation ou des erreurs pouvant indiquer un problème (comme une erreur de syntaxe dans init.sql
).
Vous pouvez ouvrir une session interactive dans le container avec psql
:
docker exec -it postgresql psql -U postgres
Une fois connecté, vous pouvez lister les tables pour vérifier la création de la table player
:
\dt
Et interroger la table, par exemple :
SELECT * FROM player;
Configurez une nouvelle connexion avec les paramètres suivants :
- Hôte :
localhost
- Port :
5432
- Utilisateur :
postgres
- Mot de passe :
postgres
- Base de données :
postgres
(ou toute base de votre choix)
Lors du démarrage, PostgreSQL exécute init.sql
pour créer la table des joueurs.
-- Création de la séquence pour les identifiants des joueurs
CREATE SEQUENCE IF NOT EXISTS player_id_seq;
-- Création de la table des joueurs
CREATE TABLE IF NOT EXISTS player (
id BIGINT PRIMARY KEY DEFAULT nextval('player_id_seq'),
last_name CHARACTER VARYING(50) NOT NULL,
first_name CHARACTER VARYING(50) NOT NULL,
birth_date DATE NOT NULL,
points INTEGER NOT NULL,
rank INTEGER NOT NULL
);
-- Assignation de la séquence à la colonne id
ALTER SEQUENCE player_id_seq OWNED BY player.id;
-- Attribution du propriétaire de la table à postgres
ALTER TABLE IF EXISTS public.player OWNER TO postgres;
Méthode | Endpoint | Description |
---|---|---|
GET | /healthcheck |
Vérifie si l'API est active |
Méthode | Endpoint | Description |
---|---|---|
GET | /player |
Récupère la liste des joueurs |
GET | /player/{lastName} |
Récupère un joueur par son nom |
POST | /player |
Ajoute un nouveau joueur |
PUT | /player |
Met à jour un joueur existant |
DELETE | /player/{lastName} |
Supprime un joueur par son nom |
💡 Tous les endpoints sont documentés dans Swagger UI :
🔗 http://localhost:8080/swagger-ui/index.html#/
Vous pouvez exécuter l'application dans un conteneur Docker avec PostgreSQL.
FROM openjdk:21
WORKDIR /app
COPY target/tennis-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
version: '3.8'
services:
postgres:
image: postgres:15
environment:
POSTGRES_DB: tennis_db
POSTGRES_USER: postgres
POSTGRES_PASSWORD: your_password
ports:
- "5432:5432"
tennis-app:
build: .
depends_on:
- postgres
ports:
- "8080:8080"
docker-compose up --build
🚀 L'API sera accessible sur http://localhost:8080/
Ce projet est sous licence MIT.
Voir le fichier LICENSE pour plus d’informations.
Merci à tous ceux qui contribuent au projet ! 🙌