PHPixie/Database

View on GitHub
src/PHPixie/Database/Driver/InterBase/Adapter/Firebird.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php
namespace PHPixie\Database\Driver\InterBase\Adapter;

/**
 * Class Firebird
 * @package PHPixie\Database\Driver\InterBase\Adapter
 */
class Firebird extends \PHPixie\Database\Driver\PDO\Adapter
{
    /**
     * @var \PHPixie\Database\Driver\PDO\Connection
     */
    protected $connection;

    /**
     * @param bool $withDatabase
     * @return string
     */
    public function dsn($withDatabase = true)
    {
        if($connection = $this->config->get('connection')) {
            $dsn = $connection;
        } else {
            $dsn = 'firebird:dbname=';
            if($host = $this->config->get('host')) {
                $dsn .= $this->config->get('host');
                if($port = $this->config->get('port')) {
                    $dsn .= '/' . $port;
                }
                $dsn .= ':';
            }
            if($withDatabase) {
                $dsn .= $this->config->getRequired('database');
            }
            if($charset = $this->config->get('charset')) {
                $dsn .= ';charset=' . $charset;
            }
        }

        return $dsn;
    }

    /**
     * @param string $table
     * @return array
     */
    public function listColumns($table)
    {
        /** @var \PHPixie\Database\Driver\PDO\Result $result */
        $result = $this->connection->execute('SELECT rdb$field_name FROM rdb$relation_fields WHERE rdb$relation_name=\'' . $table . '\';');

        return $result->getField('Field');
    }

    /**
     * @return string
     */
    public function name()
    {
        return 'firebird';
    }

}