diff --git a/lib/Tuba.pm b/lib/Tuba.pm index 89d95654..35f60cc8 100644 --- a/lib/Tuba.pm +++ b/lib/Tuba.pm @@ -447,6 +447,7 @@ sub startup { $r->resource('organization_alternate_name'); $r->resource('gcmd_keyword'); + $r->get('/gcmd_keyword/:gcmd_keyword/children')->to('gcmd_keyword#children'); $r->resource('region'); $report->get('/region')->to('region#list')->name('list_report_regions'); $r->resource('dataset'); diff --git a/lib/Tuba/GcmdKeyword.pm b/lib/Tuba/GcmdKeyword.pm index 254df17e..6ae00d33 100644 --- a/lib/Tuba/GcmdKeyword.pm +++ b/lib/Tuba/GcmdKeyword.pm @@ -24,6 +24,19 @@ sub show { $c->SUPER::show(@_); } +sub children { + my $c = shift; + my $gcmd_keyword = $c->stash('gcmd_keyword'); + + my $obj = GcmdKeyword->new( + identifier => $gcmd_keyword, + )->load(speculative => 1) or return $c->reply->not_found; + my $keywords = $obj->gcmd_keywords; + $c->stash(objects => $keywords); + $c->stash(extra_cols => [qw/label/]); + $c->SUPER::list(); +} + sub _guess_object_class { return 'Tuba::DB::Object::GcmdKeyword'; }