bootstrap: more logging
[pharext/pharext.org] / app / bootstrap / model.php
index f9f729b6a5ae2a9cff158d5f9202f839a151440f..30554c8cb4def73d864b7fb6ddb3a5dc768dbbc9 100644 (file)
@@ -5,33 +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,
-       ]);
+$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));
 };
-
-//$modelconf = function($key, $injector) {
-//     return new Table($key, $injector->make(Connection::class));
-//};
-//
-//$injector->define(Model\Account::class, [
-//     "+accounts" => $modelconf,
-//     "+owners" => $modelconf,
-//     "+tokens" => $modelconf
-//]);