summaryrefslogtreecommitdiffstats
path: root/lib/private/DB/QueryBuilder/QueryBuilder.php
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2017-01-16 15:31:04 +0100
committerRobin Appelman <robin@icewind.nl>2017-03-30 11:09:26 +0200
commit4279b13270630ec1d49e91f0d4a4cbefb915a32d (patch)
tree88fa25707e44ce4cafb56f342bd6d15bd20b4053 /lib/private/DB/QueryBuilder/QueryBuilder.php
parenta65652fc1efe158bd097d573f012167cfcd26a62 (diff)
downloadnextcloud-server-4279b13270630ec1d49e91f0d4a4cbefb915a32d.tar.gz
nextcloud-server-4279b13270630ec1d49e91f0d4a4cbefb915a32d.zip
Add function builder to the query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/private/DB/QueryBuilder/QueryBuilder.php')
-rw-r--r--lib/private/DB/QueryBuilder/QueryBuilder.php30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/private/DB/QueryBuilder/QueryBuilder.php b/lib/private/DB/QueryBuilder/QueryBuilder.php
index a434140806e..3ff31de19a3 100644
--- a/lib/private/DB/QueryBuilder/QueryBuilder.php
+++ b/lib/private/DB/QueryBuilder/QueryBuilder.php
@@ -34,6 +34,8 @@ use OC\DB\QueryBuilder\ExpressionBuilder\OCIExpressionBuilder;
use OC\DB\QueryBuilder\ExpressionBuilder\PgSqlExpressionBuilder;
use OC\DB\QueryBuilder\ExpressionBuilder\SqliteExpressionBuilder;
use OC\DB\QueryBuilder\FunctionBuilder\FunctionBuilder;
+use OC\DB\QueryBuilder\FunctionBuilder\OCIFunctionBuilder;
+use OC\DB\QueryBuilder\FunctionBuilder\PgSqlFunctionBuilder;
use OC\DB\QueryBuilder\FunctionBuilder\SqliteFunctionBuilder;
use OC\SystemConfig;
use OCP\DB\QueryBuilder\IQueryBuilder;
@@ -122,6 +124,34 @@ class QueryBuilder implements IQueryBuilder {
}
/**
+ * Gets an FunctionBuilder used for object-oriented construction of query functions.
+ * This producer method is intended for convenient inline usage. Example:
+ *
+ * <code>
+ * $qb = $conn->getQueryBuilder()
+ * ->select('u')
+ * ->from('users', 'u')
+ * ->where($qb->fun()->md5('u.id'));
+ * </code>
+ *
+ * For more complex function construction, consider storing the function
+ * builder object in a local variable.
+ *
+ * @return \OCP\DB\QueryBuilder\IFunctionBuilder
+ */
+ public function fun() {
+ if ($this->connection instanceof OracleConnection) {
+ return new OCIFunctionBuilder($this->helper);
+ } else if ($this->connection->getDatabasePlatform() instanceof SqlitePlatform) {
+ return new SqliteFunctionBuilder($this->helper);
+ } else if ($this->connection->getDatabasePlatform() instanceof PostgreSqlPlatform) {
+ return new PgSqlFunctionBuilder($this->helper);
+ } else {
+ return new FunctionBuilder($this->helper);
+ }
+ }
+
+ /**
* Gets the type of the currently built query.
*
* @return integer