Oracle can not return statements but only values

So evaluate the condition directly and return 1 or 0
This commit is contained in:
Joas Schilling 2015-11-13 10:32:45 +01:00
parent b9faba8857
commit 623d34972d
2 changed files with 10 additions and 7 deletions

View File

@ -379,6 +379,7 @@ class Activity implements IExtension {
*/ */
$parameters = $fileQueryList = []; $parameters = $fileQueryList = [];
$parameters[] = self::APP_FILES; $parameters[] = self::APP_FILES;
$parameters[] = self::APP_FILES;
$fileQueryList[] = '(`type` <> ? AND `type` <> ?)'; $fileQueryList[] = '(`type` <> ? AND `type` <> ?)';
$parameters[] = self::TYPE_SHARE_CREATED; $parameters[] = self::TYPE_SHARE_CREATED;
@ -393,10 +394,12 @@ class Activity implements IExtension {
$parameters[] = $favorite . '/%'; $parameters[] = $favorite . '/%';
} }
$parameters[] = self::APP_FILES;
return [ return [
' CASE WHEN `app` = ? THEN (' . implode(' OR ', $fileQueryList) . ') ELSE `app` <> ? END ', ' CASE '
. 'WHEN `app` <> ? THEN 1 '
. 'WHEN `app` = ? AND (' . implode(' OR ', $fileQueryList) . ') THEN 1 '
. 'ELSE 0 '
. 'END = 1 ',
$parameters, $parameters,
]; ];
} }

View File

@ -290,16 +290,16 @@ class ActivityTest extends TestCase {
'items' => [], 'items' => [],
'folders' => [], 'folders' => [],
], ],
' CASE WHEN `app` = ? THEN ((`type` <> ? AND `type` <> ?)) ELSE `app` <> ? END ', ' CASE WHEN `app` <> ? THEN 1 WHEN `app` = ? AND ((`type` <> ? AND `type` <> ?)) THEN 1 ELSE 0 END = 1 ',
['files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED, 'files'] ['files', 'files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED]
], ],
[ [
[ [
'items' => ['file.txt', 'folder'], 'items' => ['file.txt', 'folder'],
'folders' => ['folder'], 'folders' => ['folder'],
], ],
' CASE WHEN `app` = ? THEN ((`type` <> ? AND `type` <> ?) OR `file` = ? OR `file` = ? OR `file` LIKE ?) ELSE `app` <> ? END ', ' CASE WHEN `app` <> ? THEN 1 WHEN `app` = ? AND ((`type` <> ? AND `type` <> ?) OR `file` = ? OR `file` = ? OR `file` LIKE ?) THEN 1 ELSE 0 END = 1 ',
['files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED, 'file.txt', 'folder', 'folder/%', 'files'] ['files', 'files', Activity::TYPE_SHARE_CREATED, Activity::TYPE_SHARE_CHANGED, 'file.txt', 'folder', 'folder/%']
], ],
]; ];
} }