blob: 6a410af438f3f5b3f705e398da57825f60da14ff [file] [log] [blame]
Akron1f3feac2017-05-05 17:05:45 +02001package Krawfish::Controller::Corpus;
2use Mojo::Base 'Mojolicious::Controller';
3use Krawfish::Koral::Query::Term;
4
5use strict;
6use warnings;
7
8sub suggest {
9 my $c = shift;
10
11 my $field = $c->param('field') // '';
12 my $prefix = $c->param('prefix');
13 my $term_type = $c->param('termType') // 'token';
14 my $foundry = $c->param('foundry');
15 my $layer = $c->param('layer');
16 my $key = $c->param('key');
17 my $value = $c->param('value');
18 my $count = $c->param('count');
19
20
21 # TODO: Probably use Krawfish::Util::Koral::Term
22 my $term = Krawfish::Koral::Query::Term->new;
23 $term->field($field);
24 $term->prefix($prefix);
25 $term->term_type($term_type);
26 $term->foundry($foundry);
27 $term->layer($layer);
28 $term->key($key);
29 $term->value($value);
30
31 # Stringify as fragment
32 my $term_escaped = quotemeta($term->to_string(1));
33
34 # Return
35 my @array = $c->krawfish->node->dictionary->terms(qr!^$term_escaped.+?!);
36
37 return $c->render(json => [@array[0..$count]]);
38};
39
401;