use CatalystX::Declare;

# a normal controller example
controller MyApp::Web::Controller::Foo {

    # this local base action chains to the root /base action
    action base under '/base' as 'foo';

    # all that's below base
    under base {

        # say hello
        final action hello {
            $ctx->stash(hello => 'rendering via root controller role');
        }

        # collecto two ints from the uri
        action nums (Int $x, Int $y) as '' under base {

            # stash the two values
            $ctx->stash(x => $x, y => $y);
        }

        # the nums action above has to two chain parts below it
        under nums {

            # one end-point where we add the numbers
            final action add { $ctx->res->body( $ctx->stash->{x} + $ctx->stash->{y} ) }

            # and one end-point where we multiply them
            final action multiply { $ctx->res->body( $ctx->stash->{x} * $ctx->stash->{y} ) }
        }
    }
}