- 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>
193 lines
4.8 KiB
PHP
193 lines
4.8 KiB
PHP
<?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);
|
|
}
|
|
}
|