diff --git a/logic/Actions/FetchData.php b/logic/Actions/FetchData.php index a1a48dd..f6e008e 100644 --- a/logic/Actions/FetchData.php +++ b/logic/Actions/FetchData.php @@ -8,8 +8,10 @@ class FetchData { private $validator; public function __construct( - \SBRL\TomlConfig $in_settings) { + \SBRL\TomlConfig $in_settings, + \AirQuality\Database $in_database) { $this->settings = $in_settings; + $this->database = $in_database; $this->validator = new \AirQuality\Validator($_GET); } diff --git a/logic/Database.php b/logic/Database.php new file mode 100644 index 0000000..384d717 --- /dev/null +++ b/logic/Database.php @@ -0,0 +1,46 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false, + PDO::ATTR_AUTOCOMMIT => false + ]; + + function __construct(\SBRL\TomlConfig $in_settings) { + $this->settings = $in_settings; + } + + public function connect() { + $this->connection = new \PDO( + $this->get_connection_string(), + $this->settings->get("database.username"), + $this->settings->get("database.password"), + ); + // Make this connection read-only + if(self::read_only) + $this->connection->query("SET SESSION TRANSACTION READ ONLY;"); + } + + public function query($sql, $variables) { + // FUTURE: Optionally cache prepared statements? + return $this->connection->prepare($sql)->execute($variables); + } + + private function get_connection_string() { + return "{$this->settings->get("database.type")}:host={$this->settings->get("database.host")};dbname={$this->settings->get("database.name")};charset=utf8mb4"; + } +} diff --git a/settings.default.toml b/settings.default.toml index 488452b..64ebf1c 100644 --- a/settings.default.toml +++ b/settings.default.toml @@ -7,8 +7,15 @@ # Settings that control the database, or the connection to it type = "mysql" # MariaDB. MySQL servers might work too, but no promises. -database_name = "aq_db" + +# The host that the database is running on. Both IP addresses & domain names are fine :-) +host = "localhost" +# The database to use. +name = "aq_db" + +# The username to connect with username = "user" +# the password to connect with password = "Define_in_custom_config_file" [routing]