| Akron | 1f3feac | 2017-05-05 17:05:45 +0200 | [diff] [blame^] | 1 | package Krawfish::Controller::Corpus; |
| 2 | use Mojo::Base 'Mojolicious::Controller'; |
| 3 | use Krawfish::Koral::Query::Term; |
| 4 | |
| 5 | use strict; |
| 6 | use warnings; |
| 7 | |
| 8 | sub 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 | |
| 40 | 1; |