Commit | Line | Data |
7adfd53f |
1 | package # hide from PAUSE |
2 | RTest::TestDB::Foo; |
3 | |
082e6aee |
4 | use Moose; |
3cbb53fc |
5 | extends 'DBIx::Class'; |
7adfd53f |
6 | |
082e6aee |
7 | use MooseX::Types::Moose qw/ArrayRef Int/; |
baee102d |
8 | use MooseX::Types::Common::String qw/NonEmptySimpleStr/; |
7adfd53f |
9 | |
082e6aee |
10 | has 'id' => (isa => Int, is => 'ro', required => 1); |
ed6d9da8 |
11 | has 'first_name' => (isa => NonEmptySimpleStr, is => 'rw', required => 1); |
12 | has 'last_name' => (isa => NonEmptySimpleStr, is => 'rw', required => 1); |
242dd297 |
13 | has 'bars' => (isa => ArrayRef, is => 'ro'); |
13312031 |
14 | has 'bazes' => ( |
15 | isa => ArrayRef, |
16 | required => 1, |
17 | reader => 'get_bazes', |
18 | writer => 'set_bazes' |
7adfd53f |
19 | ); |
20 | |
082e6aee |
21 | use namespace::clean -except => [ 'meta' ]; |
7adfd53f |
22 | |
df9a9c12 |
23 | __PACKAGE__->load_components(qw/IntrospectableM2M Core/); |
7adfd53f |
24 | __PACKAGE__->table('foo'); |
25 | |
26 | __PACKAGE__->add_columns( |
27 | id => { data_type => 'integer', size => 16, is_auto_increment => 1 }, |
28 | first_name => { data_type => 'varchar', size => 255 }, |
29 | last_name => { data_type => 'varchar', size => 255 }, |
30 | ); |
31 | |
7adfd53f |
32 | __PACKAGE__->set_primary_key('id'); |
33 | |
510f6c25 |
34 | __PACKAGE__->has_many( |
35 | 'bars' => 'RTest::TestDB::Bar', |
36 | { 'foreign.foo_id' => 'self.id' } |
37 | ); |
38 | |
df9a9c12 |
39 | __PACKAGE__->has_many('foo_baz' => 'RTest::TestDB::FooBaz', 'foo'); |
40 | __PACKAGE__->many_to_many('bazes' => 'foo_baz' => 'baz'); |
7adfd53f |
41 | |
082e6aee |
42 | sub display_name { |
43 | my $self = shift; |
44 | return join(' ', $self->first_name, $self->last_name); |
7adfd53f |
45 | } |
46 | |
510f6c25 |
47 | around get_bazes => sub { [ $_[1]->bazes_rs->all ] }; |
a5200252 |
48 | |
c689b58e |
49 | __PACKAGE__->meta->make_immutable(inline_constructor => 0); |
a5200252 |
50 | |
7adfd53f |
51 | 1; |