1 package My::Schema::Result::Person;
5 use base qw(DBIx::Class::Core);
7 __PACKAGE__->load_components(qw(ParameterizedJoinHack));
9 __PACKAGE__->table('people');
11 __PACKAGE__->add_columns(
12 id => { data_type => 'integer', is_nullable => 0, is_auto_increment => 1 },
13 name => { data_type => 'text', is_nullable => 0 }
16 __PACKAGE__->set_primary_key('id');
18 __PACKAGE__->has_many(
19 assigned_tasks => 'My::Schema::Result::Task',
20 { 'foreign.assigned_to_id' => 'self.id' },
23 __PACKAGE__->parameterized_has_many(
24 urgent_assigned_tasks => 'My::Schema::Result::Task',
25 [ [ qw(urgency_threshold) ], sub {
28 "$args->{foreign_alias}.assigned_to_id" =>
29 { -ident => "$args->{self_alias}.id" },
30 "$args->{foreign_alias}.urgency" =>
31 { '>', $_{urgency_threshold} }
37 __PACKAGE__->parameterized_has_many(
38 tasks_in_urgency_range => 'My::Schema::Result::Task',
39 [ [ qw( min max ) ], sub {
42 "$args->{foreign_alias}.assigned_to_id" =>
43 { -ident => "$args->{self_alias}.id" },
44 "$args->{foreign_alias}.urgency" =>
46 "$args->{foreign_alias}.urgency" =>
53 __PACKAGE__->parameterized_has_many(
54 unconstrained_tasks => 'My::Schema::Result::Task',
58 "$args->{foreign_alias}.assigned_to_id" =>
59 { -ident => "$args->{self_alias}.id" },
66 my $_catch_fail = sub {
68 die "Error key redefinition"
69 if exists $ERROR{ $key };
72 __PACKAGE__->parameterized_has_many(@_);
77 $_catch_fail->('no_args');
78 $_catch_fail->('no_source', 'fail_1');
79 $_catch_fail->('no_cond', fail_2 => 'My::Schema::Result::Task');
80 $_catch_fail->('invalid_cond',
81 fail_3 => 'My::Schema::Result::Task',
84 $_catch_fail->('undef_args',
85 fail_4 => 'My::Schema::Result::Task',
88 $_catch_fail->('invalid_args',
89 fail_5 => 'My::Schema::Result::Task',
92 $_catch_fail->('undef_builder',
93 fail_6 => 'My::Schema::Result::Task',
96 $_catch_fail->('invalid_builder',
97 fail_7 => 'My::Schema::Result::Task',