moved db name into config

This commit is contained in:
julien
2026-03-04 04:20:45 +01:00
parent 99f274e3d1
commit 7f906b6199
2 changed files with 94 additions and 17 deletions

View File

@@ -4,22 +4,65 @@ declare(strict_types=1);
use RedBeanPHP\R;
/**
* Crée le fichier SQLite sil nexiste pas.
* -----------------------------------------------------------------
* Helper crée le fichier SQLite sil nexiste pas.
* -----------------------------------------------------------------
*
* @param string $path Chemin complet du fichier SQLite.
*/
function ensureDatabaseFile(string $path): void
{
if (!file_exists($path)) {
// crée un fichier vide
touch($path);
chmod($path, 0664); // rwrwr--
// permissions rwrwr-- (0664) suffisantes pour le serveur web
chmod($path, 0664);
}
}
/**
* Initialise RedBeanPHP avec SQLite.
* -----------------------------------------------------------------
* Initialise RedBeanPHP avec le driver SQLite.
* -----------------------------------------------------------------
*
* Cette fonction :
* 1. Sassure que le fichier SQLite existe (via ensureDatabaseFile()).
* 2. Lance R::setup() avec le préfixe « sqlite: ».
* 3. Définit le mode « freeze » (false en dev, true en prod).
*
* @param string $dbPath Chemin complet du fichier SQLite.
*/
function initRedBean(string $dbPath): void
{
// 1. création éventuelle du fichier
ensureDatabaseFile($dbPath);
// 2. connexion à la base SQLite
R::setup('sqlite:' . $dbPath);
R::freeze(false); // false en dev, true en prod
// 3. pendant le développement on laisse freeze à false
// (RedBean crée/modifie les tables automatiquement)
R::freeze(false);
}
/**
* -----------------------------------------------------------------
* Retourne le chemin par défaut du fichier SQLite.
* -----------------------------------------------------------------
*
* Le nom du fichier peut être surchargé via la variable denvironnement
* DB_FILE (ou via un .env chargé par lapplication). Ainsi on évite
* de coder en dur le nom du fichier dans le bootstrap.
*
* @return string Chemin absolu du fichier SQLite.
*/
function getDefaultDbPath(): string
{
// Le répertoire « database » se trouve deux niveaux au-dessus de ce fichier
$baseDir = realpath(__DIR__ . '/../../database');
// Nom du fichier valeur par défaut « app.sqlite »
$fileName = getenv('DB_FILE') ?: 'app.sqlite';
return $baseDir . DIRECTORY_SEPARATOR . $fileName;
}