<?php

namespace QuasselRestSearch;


class Config
{
    public $database_connector;
    public $username;
    public $password;
    public $database_options;

    public $backend;
    public $enable_ranking;

    public $path_prefix;

    public function __construct(string $path_prefix, string $database_connector, string $username, string $password, string $backend, array $options, bool $enable_ranking)
    {
        $this->database_connector = $database_connector;
        $this->username = $username;
        $this->password = $password;
        $this->path_prefix = rtrim($path_prefix, "/");
        $this->backend = $backend;
        $this->database_options = $options;
        $this->enable_ranking = $enable_ranking;
    }

    public static function createFromGlobals()
    {
        $options = [];
        if (defined('qrs_db_option_tsqueryfunction') && (null !== qrs_db_option_tsqueryfunction)) {
            $options['tsqueryfunction'] = qrs_db_option_tsqueryfunction;
        }

        $options['timeout'] = (defined('qrs_db_option_timeout') && (null !== qrs_db_option_timeout)) ? qrs_db_option_timeout : 5000;

        if (defined('qrs_db_connector') && null !== qrs_db_connector)
            return new Config(qrs_path_prefix, qrs_db_connector, qrs_db_user, qrs_db_pass, qrs_backend, $options, qrs_enable_ranking);
        else
            return new Config(qrs_path_prefix, 'pgsql:host=' . qrs_db_host . ';port=' . qrs_db_port . ';dbname=' . qrs_db_name . '', qrs_db_user, qrs_db_pass, qrs_backend, $options, qrs_enable_ranking);
    }
}