diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties new file mode 100644 index 0000000..8240e41 --- /dev/null +++ b/src/main/resources/application-dev.properties @@ -0,0 +1,28 @@ +# ==================================================================== +# AfterWork Server - Configuration DÉVELOPPEMENT +# ==================================================================== +# Ce fichier est automatiquement chargé avec: mvn quarkus:dev +# Les configurations ici surchargent celles de application.properties + +# ==================================================================== +# Base de données H2 (en mémoire) +# ==================================================================== +quarkus.datasource.db-kind=h2 +quarkus.datasource.jdbc.url=jdbc:h2:mem:afterwork_db;DB_CLOSE_DELAY=-1 +quarkus.datasource.username=sa +quarkus.datasource.password= +quarkus.datasource.jdbc.driver=org.h2.Driver +quarkus.datasource.devservices.enabled=false + +# ==================================================================== +# Hibernate ORM +# ==================================================================== +quarkus.hibernate-orm.database.generation=drop-and-create +quarkus.hibernate-orm.log.sql=true +quarkus.hibernate-orm.format_sql=true + +# ==================================================================== +# Logging +# ==================================================================== +quarkus.log.level=DEBUG +quarkus.log.category."com.lions.dev".level=DEBUG diff --git a/src/main/resources/application-prod.properties b/src/main/resources/application-prod.properties index 6a36ee6..d903256 100644 --- a/src/main/resources/application-prod.properties +++ b/src/main/resources/application-prod.properties @@ -1,14 +1,18 @@ # ==================================================================== -# AfterWork Server - Configuration de Production +# AfterWork Server - Configuration PRODUCTION # ==================================================================== -# IMPORTANT: Les propriétés build-time (app.name, root-path, compression) -# sont définies dans application.properties et ne peuvent pas être changées ici +# Ce fichier est automatiquement chargé avec: java -jar app.jar +# Les configurations ici surchargent celles de application.properties -# HTTP Configuration (runtime only) -quarkus.http.host=0.0.0.0 -quarkus.http.port=8080 +# ==================================================================== +# HTTP - Chemin de base de l'API +# ==================================================================== +# Permet d'accéder à l'API via https://api.lions.dev/afterwork +quarkus.http.root-path=/afterwork -# Base de données PostgreSQL (Production) +# ==================================================================== +# Base de données PostgreSQL +# ==================================================================== quarkus.datasource.db-kind=postgresql quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST:postgresql}:${DB_PORT:5432}/${DB_NAME:mic-after-work-server-impl-quarkus-main} quarkus.datasource.username=${DB_USERNAME:lionsuser} @@ -16,14 +20,19 @@ quarkus.datasource.password=${DB_PASSWORD:LionsUser2025!} quarkus.datasource.jdbc.driver=org.postgresql.Driver quarkus.datasource.jdbc.max-size=20 quarkus.datasource.jdbc.min-size=5 +quarkus.datasource.devservices.enabled=false -# Hibernate +# ==================================================================== +# Hibernate ORM +# ==================================================================== quarkus.hibernate-orm.database.generation=update quarkus.hibernate-orm.log.sql=false quarkus.hibernate-orm.sql-load-script=no-file quarkus.hibernate-orm.jdbc.statement-batch-size=20 -# CORS - Production strict +# ==================================================================== +# CORS (Cross-Origin Resource Sharing) +# ==================================================================== quarkus.http.cors=true quarkus.http.cors.origins=https://afterwork.lions.dev quarkus.http.cors.methods=GET,POST,PUT,DELETE,OPTIONS,PATCH @@ -32,7 +41,9 @@ quarkus.http.cors.exposed-headers=content-disposition quarkus.http.cors.access-control-max-age=24H quarkus.http.cors.access-control-allow-credentials=true +# ==================================================================== # Logging +# ==================================================================== quarkus.log.level=INFO quarkus.log.console.enable=true quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n @@ -41,30 +52,27 @@ quarkus.log.category."com.lions.dev".level=INFO quarkus.log.category."org.hibernate".level=WARN quarkus.log.category."io.quarkus".level=INFO -# OpenAPI/Swagger - Configuration build-time dans application.properties - -# Health checks - Utilise les valeurs par défaut de Quarkus - -# Métriques - Configuration build-time dans application.properties - +# ==================================================================== # WebSocket +# ==================================================================== quarkus.websocket.max-frame-size=65536 -# Upload de fichiers -quarkus.http.body.uploads-directory=/tmp/uploads - -# Compression HTTP - Configuration build-time dans application.properties - +# ==================================================================== # SSL/TLS (géré par le reverse proxy) +# ==================================================================== quarkus.http.ssl.certificate.files= quarkus.http.ssl.certificate.key-files= quarkus.http.insecure-requests=enabled +# ==================================================================== # Performance +# ==================================================================== quarkus.thread-pool.core-threads=2 quarkus.thread-pool.max-threads=16 quarkus.thread-pool.queue-size=100 -# Timezone +# ==================================================================== +# Localisation +# ==================================================================== quarkus.locales=fr-FR,en-US quarkus.default-locale=fr-FR diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 7fa4cd6..b3f066a 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,63 +1,26 @@ -# Configuration Swagger UI +# ==================================================================== +# AfterWork Server - Configuration Commune +# ==================================================================== +# Ce fichier contient les configurations partagées par tous les environnements. +# Les configurations spécifiques sont dans : +# - application-dev.properties (développement) +# - application-prod.properties (production) + +# ==================================================================== +# Swagger/OpenAPI (commun à tous les environnements) +# ==================================================================== quarkus.swagger-ui.always-include=true quarkus.swagger-ui.path=/q/swagger-ui quarkus.smallrye-openapi.path=/openapi -# Configuration datasource par défaut (PostgreSQL) pour le build -# Les valeurs seront remplacées au runtime par les variables d'environnement -quarkus.datasource.db-kind=postgresql -quarkus.datasource.jdbc.url=jdbc:postgresql://postgresql:5432/mic-after-work-server-impl-quarkus-main -quarkus.datasource.username=lionsuser -quarkus.datasource.password=LionsUser2025! -quarkus.datasource.jdbc.driver=org.postgresql.Driver -quarkus.hibernate-orm.database.generation=update -quarkus.hibernate-orm.log.sql=false - -# Configuration de la base de données H2 (en mémoire) pour Quarkus en développement -%dev.quarkus.datasource.db-kind=h2 -%dev.quarkus.datasource.jdbc.url=jdbc:h2:mem:afterwork_db;DB_CLOSE_DELAY=-1 -%dev.quarkus.datasource.username=sa -%dev.quarkus.datasource.password= -%dev.quarkus.hibernate-orm.database.generation=drop-and-create -%dev.quarkus.hibernate-orm.log.sql=true -%dev.quarkus.datasource.devservices.enabled=false - -# Configuration PostgreSQL (production) - commentée pour les tests -# %dev.quarkus.datasource.db-kind=postgresql -# %dev.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/afterwork_db -# %dev.quarkus.datasource.username=afterwork -# %dev.quarkus.datasource.password=@ft3rw0rk -# %dev.quarkus.datasource.jdbc.driver=org.postgresql.Driver - -# Configuration de la base de données PostgreSQL pour Quarkus en production -%prod.quarkus.datasource.db-kind=postgresql -%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://${DB_HOST:postgresql}:${DB_PORT:5432}/${DB_NAME:mic-after-work-server-impl-quarkus-main} -%prod.quarkus.datasource.username=${DB_USERNAME:lionsuser} -%prod.quarkus.datasource.password=${DB_PASSWORD:LionsUser2025!} -%prod.quarkus.datasource.jdbc.driver=org.postgresql.Driver -%prod.quarkus.hibernate-orm.database.generation=update -%prod.quarkus.hibernate-orm.log.sql=false -%prod.quarkus.datasource.devservices.enabled=false - -# Niveau de logging pour Quarkus en développement -%dev.quarkus.log.level=DEBUG - -# Niveau de logging pour Quarkus en production -%prod.quarkus.log.level=INFO - -# Configuration de la signature JWT (désactivée pour l'instant) -# mp.jwt.verify.publickey.location=META-INF/resources/publicKey.pem -# mp.jwt.verify.issuer=https://issuer.example.com -# mp.jwt.token.header=Authorization -# mp.jwt.token.schemes=Bearer -# smallrye.jwt.sign.key.location=META-INF/resources/privateKey.pem -# smallrye.jwt.sign.key.algorithm=RS256 -# smallrye.jwt.token.lifetime=3600 - -# Activer le support multipart pour l'upload de fichiers -quarkus.http.body.uploads-directory=/tmp/uploads -quarkus.http.limits.max-body-size=10M - -# Écouter sur toutes les interfaces réseau (0.0.0.0) pour être accessible depuis le Samsung +# ==================================================================== +# HTTP (commun à tous les environnements) +# ==================================================================== quarkus.http.host=0.0.0.0 quarkus.http.port=8080 + +# ==================================================================== +# Upload de fichiers (commun à tous les environnements) +# ==================================================================== +quarkus.http.body.uploads-directory=/tmp/uploads +quarkus.http.limits.max-body-size=10M diff --git a/src/main/resources/db/migration/V2__Add_Event_Additional_Fields.sql b/src/main/resources/db/migration/V2__Add_Event_Additional_Fields.sql new file mode 100644 index 0000000..af12966 --- /dev/null +++ b/src/main/resources/db/migration/V2__Add_Event_Additional_Fields.sql @@ -0,0 +1,46 @@ +-- Migration pour ajouter les champs supplémentaires à la table events +-- Date: 2026-01-12 +-- Description: Ajout des champs manquants pour la création complète d'événements + +-- Ajouter la colonne max_participants +ALTER TABLE events ADD COLUMN IF NOT EXISTS max_participants INTEGER; + +-- Ajouter la colonne tags +ALTER TABLE events ADD COLUMN IF NOT EXISTS tags VARCHAR(500); + +-- Ajouter la colonne organizer +ALTER TABLE events ADD COLUMN IF NOT EXISTS organizer VARCHAR(200); + +-- Ajouter la colonne participation_fee +ALTER TABLE events ADD COLUMN IF NOT EXISTS participation_fee INTEGER; + +-- Ajouter la colonne privacy_rules +ALTER TABLE events ADD COLUMN IF NOT EXISTS privacy_rules VARCHAR(1000); + +-- Ajouter la colonne transport_info +ALTER TABLE events ADD COLUMN IF NOT EXISTS transport_info VARCHAR(1000); + +-- Ajouter la colonne accommodation_info +ALTER TABLE events ADD COLUMN IF NOT EXISTS accommodation_info VARCHAR(1000); + +-- Ajouter la colonne accessibility_info +ALTER TABLE events ADD COLUMN IF NOT EXISTS accessibility_info VARCHAR(1000); + +-- Ajouter la colonne parking_info +ALTER TABLE events ADD COLUMN IF NOT EXISTS parking_info VARCHAR(1000); + +-- Ajouter la colonne security_protocol +ALTER TABLE events ADD COLUMN IF NOT EXISTS security_protocol VARCHAR(1000); + +-- Commentaires pour documentation +COMMENT ON COLUMN events.max_participants IS 'Nombre maximum de participants autorisés'; +COMMENT ON COLUMN events.tags IS 'Tags/mots-clés associés à l''événement (séparés par des virgules)'; +COMMENT ON COLUMN events.organizer IS 'Nom de l''organisateur de l''événement'; +COMMENT ON COLUMN events.participation_fee IS 'Frais de participation en centimes'; +COMMENT ON COLUMN events.privacy_rules IS 'Règles de confidentialité de l''événement'; +COMMENT ON COLUMN events.transport_info IS 'Informations sur les transports disponibles'; +COMMENT ON COLUMN events.accommodation_info IS 'Informations sur l''hébergement'; +COMMENT ON COLUMN events.accessibility_info IS 'Informations sur l''accessibilité'; +COMMENT ON COLUMN events.parking_info IS 'Informations sur le parking'; +COMMENT ON COLUMN events.security_protocol IS 'Protocole de sécurité de l''événement'; +