flush
[m6w6/pq-gateway] / lib / pq / Query / Executor.php
diff --git a/lib/pq/Query/Executor.php b/lib/pq/Query/Executor.php
new file mode 100644 (file)
index 0000000..a01580a
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+namespace pq\Query;
+
+/**
+ * A synchronous query executor
+ */
+class Executor implements ExecutorInterface
+{
+       /**
+        * @var \pq\Connection
+        */
+       protected $conn;
+       
+       /**
+        * Create a synchronous query executor
+        * @param \pq\Connection $conn
+        */
+       function __construct(\pq\Connection $conn) {
+               $this->conn = $conn;
+       }
+       
+       /**
+        * @inheritdoc
+        * @return \pq\Connection
+        */
+       function getConnection() {
+               return $this->conn;
+       }
+       
+       /**
+        * @inheritdoc
+        * @param \pq\Connection $conn
+        * @return \pq\Query\Executor
+        */
+       function setConnection(\pq\Connection $conn) {
+               $this->conn = $conn;
+               return $this;
+       }
+       
+       /**
+        * Execute the query synchronously through \pq\Connection::execParams()
+        * @param \pq\Query\WriterInterface $query
+        * @param callable $callback
+        * @return mixed
+        */
+       function execute(WriterInterface $query, callable $callback) {
+               return $callback($this->getConnection()->execParams($query, $query->getParams(), $query->getTypes()));
+       }
+}