public function getTableSchema($table, $database = 'base')
    {
        $cacher = $this->config->getSchemaCacher();
        if ($cacher->has($table)) return $cacher->get($table);

        $driver = $this->getDatabase($database)->getDriver();
        $connection = $this->establishConnection($database, Database::TARGET_SLAVE);
        $describe = $driver->getTableDescribe($connection, $table);

        $schema = new TableSchema($table, $describe);
        $cacher->cache($table, $schema);
        return $schema;
    }