feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD) * DEV: Clés TEST Pierre (mode test) * REC: Clés TEST Client (mode test) * PROD: Clés LIVE Client (mode live) - Ajout de la gestion des bases de données immeubles/bâtiments * Configuration buildings_database pour DEV/REC/PROD * Service BuildingService pour enrichissement des adresses - Optimisations pages et améliorations ergonomie - Mises à jour des dépendances Composer - Nettoyage des fichiers obsolètes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
192
api/scripts/migration2/php/lib/DatabaseConfig.php
Normal file
192
api/scripts/migration2/php/lib/DatabaseConfig.php
Normal file
@@ -0,0 +1,192 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Configuration des environnements de migration
|
||||
*
|
||||
* Utilise AppConfig pour récupérer la configuration DB
|
||||
* Source: geosector (synchronisée par PM7)
|
||||
* Cibles: dva_geo (IN3/maria3), rca_geo (IN3/maria3) ou pra_geo (IN4/maria4)
|
||||
*/
|
||||
class DatabaseConfig
|
||||
{
|
||||
private const ENV_MAPPING = [
|
||||
'dva' => [
|
||||
'name' => 'DÉVELOPPEMENT',
|
||||
'hostname' => 'dapp.geosector.fr',
|
||||
'source_db' => 'geosector',
|
||||
'target_db' => 'dva_geo'
|
||||
],
|
||||
'rca' => [
|
||||
'name' => 'RECETTE',
|
||||
'hostname' => 'rapp.geosector.fr',
|
||||
'source_db' => 'geosector',
|
||||
'target_db' => 'rca_geo'
|
||||
],
|
||||
'pra' => [
|
||||
'name' => 'PRODUCTION',
|
||||
'hostname' => 'app3.geosector.fr',
|
||||
'source_db' => 'geosector',
|
||||
'target_db' => 'pra_geo'
|
||||
]
|
||||
];
|
||||
|
||||
private $env;
|
||||
private $config;
|
||||
private $appConfig;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
*
|
||||
* @param string $env Environnement: 'dva', 'rca' ou 'pra'
|
||||
* @throws Exception Si l'environnement est invalide
|
||||
*/
|
||||
public function __construct(string $env)
|
||||
{
|
||||
if (!isset(self::ENV_MAPPING[$env])) {
|
||||
throw new Exception("Invalid environment: $env. Use 'dva', 'rca' or 'pra'");
|
||||
}
|
||||
|
||||
$this->env = $env;
|
||||
|
||||
// Charger AppConfig (remonter de 4 niveaux: lib -> php -> migration2 -> scripts -> api)
|
||||
$appConfigPath = dirname(__DIR__, 4) . '/src/Config/AppConfig.php';
|
||||
if (!file_exists($appConfigPath)) {
|
||||
throw new Exception("AppConfig not found at: $appConfigPath");
|
||||
}
|
||||
require_once $appConfigPath;
|
||||
|
||||
// Simuler le host pour AppConfig en CLI
|
||||
$hostname = self::ENV_MAPPING[$env]['hostname'];
|
||||
$_SERVER['SERVER_NAME'] = $hostname;
|
||||
$_SERVER['HTTP_HOST'] = $hostname;
|
||||
|
||||
$this->appConfig = AppConfig::getInstance();
|
||||
|
||||
// Récupérer la config DB depuis AppConfig
|
||||
$dbConfig = $this->appConfig->getDatabaseConfig();
|
||||
|
||||
if (!$dbConfig || !isset($dbConfig['host'])) {
|
||||
throw new Exception("Database configuration not found for hostname: $hostname");
|
||||
}
|
||||
|
||||
// Construire la config pour la migration
|
||||
$this->config = [
|
||||
'name' => self::ENV_MAPPING[$env]['name'],
|
||||
'host' => $dbConfig['host'],
|
||||
'port' => $dbConfig['port'] ?? 3306,
|
||||
'user' => $dbConfig['username'],
|
||||
'pass' => $dbConfig['password'],
|
||||
'source_db' => self::ENV_MAPPING[$env]['source_db'],
|
||||
'target_db' => self::ENV_MAPPING[$env]['target_db']
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne l'environnement actuel
|
||||
*/
|
||||
public function getEnv(): string
|
||||
{
|
||||
return $this->env;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le nom complet de l'environnement
|
||||
*/
|
||||
public function getEnvName(): string
|
||||
{
|
||||
return $this->config['name'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne l'hôte de la base de données
|
||||
*/
|
||||
public function getHost(): string
|
||||
{
|
||||
return $this->config['host'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le port de la base de données
|
||||
*/
|
||||
public function getPort(): int
|
||||
{
|
||||
return $this->config['port'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne l'utilisateur de la base de données
|
||||
*/
|
||||
public function getUser(): string
|
||||
{
|
||||
return $this->config['user'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le mot de passe de la base de données
|
||||
*/
|
||||
public function getPassword(): string
|
||||
{
|
||||
return $this->config['pass'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le nom de la base source
|
||||
*/
|
||||
public function getSourceDb(): string
|
||||
{
|
||||
return $this->config['source_db'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le nom de la base cible
|
||||
*/
|
||||
public function getTargetDb(): string
|
||||
{
|
||||
return $this->config['target_db'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne toute la configuration
|
||||
*/
|
||||
public function getConfig(): array
|
||||
{
|
||||
return $this->config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Détecte automatiquement l'environnement depuis le hostname
|
||||
*
|
||||
* @return string 'dva', 'rca' ou 'pra' (défaut: 'dva')
|
||||
*/
|
||||
public static function autoDetect(): string
|
||||
{
|
||||
$hostname = gethostname();
|
||||
|
||||
switch ($hostname) {
|
||||
case 'dva-geo':
|
||||
return 'dva';
|
||||
case 'rca-geo':
|
||||
return 'rca';
|
||||
case 'pra-geo':
|
||||
return 'pra';
|
||||
default:
|
||||
return 'dva'; // Défaut
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si un environnement existe
|
||||
*/
|
||||
public static function exists(string $env): bool
|
||||
{
|
||||
return isset(self::ENV_MAPPING[$env]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la liste des environnements disponibles
|
||||
*/
|
||||
public static function getAvailableEnvironments(): array
|
||||
{
|
||||
return array_keys(self::ENV_MAPPING);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user