64 lines
1.7 KiB
PHP
64 lines
1.7 KiB
PHP
<?php declare(strict_types=1);
|
|
namespace App\Repository;
|
|
|
|
error_reporting(error_level: E_ALL);
|
|
|
|
use App\Provider\DatabaseConnection;
|
|
use App\Controller\EncryptionController;
|
|
use PDO;
|
|
use PDOException;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
readonly class SettingsRepository
|
|
{
|
|
public function __construct(private DatabaseConnection $databaseConnection, EncryptionController $encryptionController)
|
|
{}
|
|
|
|
public function findByName(string $name): string|bool
|
|
{
|
|
$sql = "
|
|
SELECT value
|
|
FROM " . DatabaseConnection::TABLE_SETTINGS . "
|
|
WHERE name = :name;
|
|
";
|
|
|
|
try {
|
|
$statement = $this->databaseConnection->getConnection()->prepare(query: $sql);
|
|
$statement->bindParam(param: ':name', var: $name);
|
|
$statement->execute();
|
|
if ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) {
|
|
return $result['value'];
|
|
} else {
|
|
return false;
|
|
}
|
|
} catch (PDOException $e) {
|
|
exit($e->getMessage());
|
|
}
|
|
}
|
|
|
|
public function set(string $name, string $value): int
|
|
{
|
|
|
|
$sql = "
|
|
INSERT INTO " . DatabaseConnection::TABLE_SETTINGS . " (name, value)
|
|
VALUES (:name, :value)
|
|
ON DUPLICATE KEY UPDATE
|
|
value = :value
|
|
";
|
|
|
|
try {
|
|
$statement = $this->databaseConnection->getConnection()->prepare(query: $sql);
|
|
$statement->bindParam(param: ':name', var: $name);
|
|
$statement->bindParam(param: ':value', var: $value);
|
|
|
|
$statement->execute();
|
|
return intval(value: $this->databaseConnection->getConnection()->lastInsertId());
|
|
} catch (PDOException $e) {
|
|
exit($e->getMessage());
|
|
}
|
|
}
|
|
|
|
}
|