1 package DBIx::Class::IntrospectableM2M;
5 use base 'DBIx::Class';
7 #namespace pollution. sadface.
8 __PACKAGE__->mk_classdata( _m2m_metadata => {} );
12 my ($meth_name, $link, $far_side) = @_;
13 my $store = $class->_m2m_metadata;
14 die("You are overwritting another relationship's metadata")
15 if exists $store->{$meth_name};
19 accessor => $meth_name,
20 relation => $link, #"link" table or imediate relation
21 foreign_relation => $far_side, #'far' table or foreign relation
22 (@_ > 3 ? (attrs => $_[3]) : ()), #only store if exist
23 rs_method => "${meth_name}_rs", #for completeness..
24 add_method => "add_to_${meth_name}",
25 set_method => "set_${meth_name}",
26 remove_method => "remove_from_${meth_name}",
29 #inheritable data workaround/
30 $class->_m2m_metadata({ $meth_name => $attrs, %$store});
32 $class->next::method(@_);