database = $database; $this->pdo = $this->database->getPDO(); } /** * Set or update the version in the config table. * * @param string $version The version to set. * @return bool True on success, false on failure. */ public function setVersionDefinitionsTables($version) { try { $stmt = $this->pdo->prepare(" INSERT INTO config (key, value) VALUES ('versionDefinitionsTables', :version) ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value "); $stmt->execute(['version' => $version]); } catch (PDOException $e) { // Log the error or handle it appropriately error_log('Error setting version: ' . $e->getMessage()); return false; } } /** * Get the current version from the config table. * * @return string|null The current version or null if not set. */ public function getVersionDefinitionsTables() { try { $stmt = $this->pdo->prepare("SELECT value FROM config WHERE key = 'versionDefinitionsTables'"); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC); return $row ? $row['value'] : null; } catch (PDOException $e) { error_log("Database error: " . $e->getMessage()); // Return a default value or null return null; } } /** * Get the current path Definitions Tables from the config table. * * @return string The current version or default path if not set. */ public function getPathDefinitionsTablesFile() { $defaultPath = getenv('HOME') . "/.local/share/ytdll/definitionsTables.json"; return $defaultPath; } /** * Verify database privileges by attempting to create and drop a test table. * * @return bool True if privileges are sufficient, false otherwise. */ public function verifyPrivileges() { try { $tableManager = new TableManager($this->database); $tableManager->createTable('test_table', [ ['name' => 'id', 'type' => 'SERIAL PRIMARY KEY'], ['name' => 'name', 'type' => 'VARCHAR(255)'] ]); $tableManager->dropTable('test_table'); return true; } catch (PDOException $e) { error_log("Erreur sur les privilèges d'accès à la base de données : " . $e->getMessage()); return false; } } }