Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2017-01-16 17:31:04 +0300
committerRobin Appelman <robin@icewind.nl>2017-03-30 12:09:26 +0300
commit4279b13270630ec1d49e91f0d4a4cbefb915a32d (patch)
tree88fa25707e44ce4cafb56f342bd6d15bd20b4053 /lib/public/DB
parenta65652fc1efe158bd097d573f012167cfcd26a62 (diff)
Add function builder to the query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib/public/DB')
-rw-r--r--lib/public/DB/QueryBuilder/IFunctionBuilder.php61
-rw-r--r--lib/public/DB/QueryBuilder/IQueryBuilder.php19
2 files changed, 80 insertions, 0 deletions
diff --git a/lib/public/DB/QueryBuilder/IFunctionBuilder.php b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
new file mode 100644
index 00000000000..9798a3a770e
--- /dev/null
+++ b/lib/public/DB/QueryBuilder/IFunctionBuilder.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * @author Robin Appelman <robin@icewind.nl>
+ *
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCP\DB\QueryBuilder;
+
+/**
+ * This class provides a builder for sql some functions
+ *
+ * @since 12.0.0
+ */
+interface IFunctionBuilder {
+ /**
+ * Calculates the MD5 hash of a given input
+ *
+ * @param mixed $input The input to be hashed
+ *
+ * @return IQueryFunction
+ * @since 12.0.0
+ */
+ public function md5($input);
+
+ /**
+ * Combines two input strings
+ *
+ * @param mixed $x The first input string
+ * @param mixed $y The seccond input string
+ *
+ * @return IQueryFunction
+ * @since 12.0.0
+ */
+ public function concat($x, $y);
+
+ /**
+ * Takes a substring from the input string
+ *
+ * @param mixed $input The input string
+ * @param mixed $start The start of the substring, note that counting starts at 1
+ * @param mixed $length The length of the substring
+ *
+ * @return IQueryFunction
+ * @since 12.0.0
+ */
+ public function substring($input, $start, $length = null);
+}
diff --git a/lib/public/DB/QueryBuilder/IQueryBuilder.php b/lib/public/DB/QueryBuilder/IQueryBuilder.php
index 8ef8a96b25f..2a88e7ac566 100644
--- a/lib/public/DB/QueryBuilder/IQueryBuilder.php
+++ b/lib/public/DB/QueryBuilder/IQueryBuilder.php
@@ -95,6 +95,25 @@ interface IQueryBuilder {
public function expr();
/**
+ * 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
+ * @since 12.0.0
+ */
+ public function fun();
+
+ /**
* Gets the type of the currently built query.
*
* @return integer