Better catch for long queries, #3903

This commit is contained in:
James Cole
2020-10-17 08:53:32 +02:00
parent 388da769bb
commit 01fbe89295
8 changed files with 47 additions and 47 deletions

View File

@@ -32,15 +32,12 @@ use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
use FireflyIII\Support\Http\Controllers\ModelInformation;
use FireflyIII\Support\Http\Controllers\RuleManagement;
use FireflyIII\Support\Search\OperatorQuerySearch;
use FireflyIII\Support\Search\SearchInterface;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\View\View;
use Log;
use Throwable;
/**
* Class CreateController

View File

@@ -25,11 +25,9 @@ namespace FireflyIII\Http\Controllers\Rule;
use FireflyIII\Http\Controllers\Controller;
use FireflyIII\Models\Rule;
use FireflyIII\Models\RuleGroup;
use FireflyIII\Models\RuleTrigger;
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
use FireflyIII\Support\Http\Controllers\RuleManagement;
use FireflyIII\Support\Search\OperatorQuerySearch;
use FireflyIII\User;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\JsonResponse;
@@ -91,7 +89,7 @@ class IndexController extends Controller
*/
public function search(Rule $rule): RedirectResponse
{
$route = route('search.index');
$route = route('search.index');
$query = $this->ruleRepos->getSearchQuery($rule);
$route = sprintf('%s?%s', $route, http_build_query(['search' => $query, 'rule' => $rule->id]));

View File

@@ -64,11 +64,12 @@ class SearchController extends Controller
public function index(Request $request, SearchInterface $searcher)
{
// search params:
$fullQuery = (string) $request->get('search');
$page = 0 === (int) $request->get('page') ? 1 : (int) $request->get('page');
$ruleId = (int) $request->get('rule');
$rule = null;
$ruleChanged = false;
$fullQuery = (string) $request->get('search');
$page = 0 === (int) $request->get('page') ? 1 : (int) $request->get('page');
$ruleId = (int) $request->get('rule');
$rule = null;
$ruleChanged = false;
$longQueryWarning = false;
// find rule, check if query is different, offer to update.
$ruleRepository = app(RuleRepositoryInterface::class);
@@ -79,7 +80,9 @@ class SearchController extends Controller
$ruleChanged = true;
}
}
if (strlen($fullQuery) > 250) {
$longQueryWarning = true;
}
// parse search terms:
$searcher->parseQuery($fullQuery);
@@ -89,7 +92,7 @@ class SearchController extends Controller
$subTitle = (string) trans('breadcrumbs.search_result', ['query' => $fullQuery]);
return view('search.index', compact('query', 'operators', 'page', 'rule', 'fullQuery', 'subTitle', 'ruleId', 'ruleChanged'));
return view('search.index', compact('query', 'longQueryWarning', 'operators', 'page', 'rule', 'fullQuery', 'subTitle', 'ruleId', 'ruleChanged'));
}
/**
@@ -106,6 +109,7 @@ class SearchController extends Controller
$page = 0 === (int) $request->get('page') ? 1 : (int) $request->get('page');
$searcher->parseQuery($fullQuery);
$searcher->setPage($page);
$groups = $searcher->searchTransactions();
$hasPages = $groups->hasPages();