PDO plugin: Reflections

* com.noccy.pdo: Implemented reflection for PDO databases,
  tables and columns. Reflectors for MySQL and Sqlite.
* com.noccy.pdo: Added pdo:inspect command.
* com.noccy.docker: Added basic stack management and commands.
* com.noccy.docker: Moved commands to dedicated namespace.
* Environment: readConfig and writeConfig helper added, with
  a flag to use the global config dir ~/.config/spark.
This commit is contained in:
2021-12-23 23:22:25 +01:00
parent 3f63cad176
commit 538383c33d
28 changed files with 819 additions and 12 deletions

View File

@ -4,6 +4,9 @@ namespace SparkPlug\Com\Noccy\Pdo;
use Spark\Resource\ResourceType;
use PDO;
use SparkPlug\Com\Noccy\Pdo\Reflection\Reflector\MysqlReflector;
use SparkPlug\Com\Noccy\Pdo\Reflection\Reflector\ReflectorInterface;
use SparkPlug\Com\Noccy\Pdo\Reflection\Reflector\SqliteReflector;
class PdoResource extends ResourceType
{
@ -47,6 +50,23 @@ class PdoResource extends ResourceType
return $this->pdo;
}
public function getReflector(): ?ReflectorInterface
{
$uri = $this->options['uri'];
if (!preg_match('|^(.+?):|', $uri, $m)) {
fprintf(STDERR, "error: Bad resource URI\n");
return null;
}
switch ($m[1]) {
case 'mysql':
return new MysqlReflector($this);
case 'sqlite':
return new SqliteReflector($this);
}
}
public function info()
{
return $this->options['uri'];