X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=app%2Fbootstrap%2Fmodel.php;h=30554c8cb4def73d864b7fb6ddb3a5dc768dbbc9;hb=9e35d9e1f6adb610b17e940616cd1dc4ec8aa0d7;hp=105125e64e34e5a021fac34b20e68b91d6b3102f;hpb=26494fb5cdfb9cf103904d10b6bda564bcf2d0bd;p=pharext%2Fpharext.org diff --git a/app/bootstrap/model.php b/app/bootstrap/model.php index 105125e..30554c8 100644 --- a/app/bootstrap/model.php +++ b/app/bootstrap/model.php @@ -5,29 +5,36 @@ namespace app; require_once __DIR__."/config.php"; require_once __DIR__."/pq.php"; -use pq\Connection; +use Auryn\Injector; +use pq\Query\Executor; +use pq\Gateway\Table; +use SplSubject, SplObserver; + +class QueryLogger extends Logger implements SplObserver +{ + function update(SplSubject $executor) { + if (($result = $executor->getResult())) { + $query = $executor->getQuery(); + $this->debug($query, [ + "params" => $query->getParams(), + "result" => $result + ]); + } + } +} /* @var $injector \Auryn\Injector */ -$injector->define(Model\Accounts::class, [ - "conn" => Connection::class, - ]) - ->define(Model\Tokens::class, [ - "conn" => Connection::class, - ]) - ->define(Model\Authorities::class, [ - "conn" => Connection::class, - ]) - ->define(Model\Owners::class, [ - "conn" => Connection::class, - ]); - -//$modelconf = function($key, $injector) { -// return new Table($key, $injector->make(Connection::class)); -//}; -// -//$injector->define(Model\Account::class, [ -// "+accounts" => $modelconf, -// "+owners" => $modelconf, -// "+tokens" => $modelconf -//]); +$injector->prepare(Executor::class, function(Executor $executor, Injector $injector) { + $executor->attach(new QueryLogger($injector->make(Config::class), "query")); +}); + +foreach ([Model\Accounts::class, Model\Tokens::class, Model\Authorities::class, Model\Owners::class] as $class) { + $injector->prepare($class, function(Table $table, Injector $injector) { + $table->setQueryExecutor($injector->make(Executor::class)); + }); +} + +\pq\Gateway\Table::$defaultResolver = function($table) use($injector) { + return $injector->make("app\\Model\\" . ucfirst($table)); +};