42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace SparkPlug\Com\Noccy\Pdo\Reflection\Reflector;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use PDO;
							 | 
						||
| 
								 | 
							
								use SparkPlug\Com\Noccy\Pdo\PdoResource;
							 | 
						||
| 
								 | 
							
								use SparkPlug\Com\Noccy\Pdo\Reflection\DatabaseReflectionInterface;
							 | 
						||
| 
								 | 
							
								use SparkPlug\Com\Noccy\Pdo\Reflection\TableReflectionInterface;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SqliteDatabaseReflection implements DatabaseReflectionInterface
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private PDO $pdo;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private array $tables = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function __construct(PdoResource $db, SqliteReflector $reflector)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $pdo = $db->getPDO();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //$tableQuery = $pdo->prepare("SELECT name FROM sqlite_schema WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' ORDER BY 1;");
							 | 
						||
| 
								 | 
							
								        $tableQuery = $pdo->prepare("SELECT * FROM sqlite_schema ORDER BY 1;");
							 | 
						||
| 
								 | 
							
								        $tableQuery->execute();
							 | 
						||
| 
								 | 
							
								        $tables = $tableQuery->fetchAll(PDO::FETCH_ASSOC);
							 | 
						||
| 
								 | 
							
								        foreach ($tables as $tinfo) {
							 | 
						||
| 
								 | 
							
								            $tname = $tinfo['name'];
							 | 
						||
| 
								 | 
							
								            $this->tables[$tname] = $reflector->createTableReflection($tname);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getAllTables(): array
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->tables;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function getTable(string $name): ?TableReflectionInterface
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return $this->tables[$name] ?? null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |