Commit | Line | Data |
61ef2dee |
1 | package SomeModelClassInterface; |
2 | use Moose::Role; |
3 | use namespace::autoclean; |
4 | |
5 | requires 'say_hello'; |
6 | |
7d26c84b |
7 | package SomeModelClass; |
8 | use Moose; |
8c228ad4 |
9 | use CatalystX::ControllerGeneratingModel; |
046d763d |
10 | use namespace::autoclean; |
7d26c84b |
11 | |
12 | # Note trivial calling convention. |
13 | # Apply MX::Method::Signatures and MX::Types::Structured to be less lame. |
14 | |
15 | # Introspection should only reflect methods which satisfy the calling convention |
16 | # This is left as an exercise to the reader. :) |
17 | |
d7bd7765 |
18 | # Note command syntax not actually needed, this could be a normal sub, |
19 | # but doing so makes the eventual merge harder.. |
20 | |
8c228ad4 |
21 | command say_hello => sub { |
d7bd7765 |
22 | my ($self, $document) = @_; |
23 | |
3765b9ee |
24 | confess("Not a hash") unless (ref($document) eq 'HASH'); |
d7bd7765 |
25 | my $name = $document->{name}; |
26 | return({ type => 'say_hello_response', |
27 | |
28 | body => "Hello $name" }); |
8c228ad4 |
29 | }; |
7d26c84b |
30 | |
61ef2dee |
31 | with 'SomeModelClassInterface'; |
32 | |
7d26c84b |
33 | __PACKAGE__->meta->make_immutable; |
34 | |