1 package DBIx::Class::ResultSetManager;
4 use base 'DBIx::Class';
7 use DBIx::Class::_Util 'set_subname';
10 warn "DBIx::Class::ResultSetManager never left experimental status and
11 has now been DEPRECATED. This module will be deleted in 09000 so please
12 migrate any and all code using it to explicit resultset classes using either
13 __PACKAGE__->resultset_class(...) calls or by switching from using
14 DBIx::Class::Schema->load_classes() to load_namespaces() and creating
15 appropriate My::Schema::ResultSet::* classes for it to pick up.";
19 DBIx::Class::ResultSetManager - scheduled for deletion in 09000
23 DBIx::Class::ResultSetManager never left experimental status and
24 has now been DEPRECATED. This module will be deleted in 09000 so please
25 migrate any and all code using it to explicit resultset classes using either
26 __PACKAGE__->resultset_class(...) calls or by switching from using
27 DBIx::Class::Schema->load_classes() to load_namespaces() and creating
28 appropriate My::Schema::ResultSet::* classes for it to pick up.";
32 __PACKAGE__->mk_group_accessors(inherited => qw(
33 base_resultset_class table_resultset_class_suffix
35 __PACKAGE__->base_resultset_class('DBIx::Class::ResultSet');
36 __PACKAGE__->table_resultset_class_suffix('::_resultset');
39 my ($self,@rest) = @_;
40 my $ret = $self->next::method(@rest);
42 $self->_register_attributes;
43 $self->_register_resultset_class;
48 sub load_resultset_components {
49 my ($self,@comp) = @_;
50 my $resultset_class = $self->_setup_resultset_class;
51 $resultset_class->load_components(@comp);
54 sub _register_attributes {
56 my $cache = $self->_attr_cache;
57 return if keys %$cache == 0;
59 foreach my $meth (keys %{ { map
62 { Package::Stash->new($_)->list_all_symbols("CODE") }
63 @{ mro::get_linear_isa( ref $self || $self ) }
65 # *DO NOT* rely on P::S returning crefs in reverse mro order
66 # but instead ask the mro to redo the lookup
67 # This codepath is extremely old, miht as well keep it running
68 # as-is with no room for surprises
69 my $attrs = $cache->{$self->can($meth)};
71 if ($attrs->[0] eq 'ResultSet') {
73 my $resultset_class = $self->_setup_resultset_class;
74 my $name = join '::',$resultset_class, $meth;
75 *$name = set_subname $name, $self->can($meth);
76 delete ${"${self}::"}{$meth};
81 sub _setup_resultset_class {
83 my $resultset_class = $self . $self->table_resultset_class_suffix;
85 unless (@{"$resultset_class\::ISA"}) {
86 @{"$resultset_class\::ISA"} = ($self->base_resultset_class);
88 return $resultset_class;
91 sub _register_resultset_class {
93 my $resultset_class = $self . $self->table_resultset_class_suffix;
95 if (@{"$resultset_class\::ISA"}) {
96 $self->result_source_instance->resultset_class($resultset_class);
98 $self->result_source_instance->resultset_class
99 ($self->base_resultset_class);
103 =head1 FURTHER QUESTIONS?
105 Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
107 =head1 COPYRIGHT AND LICENSE
109 This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
110 by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
111 redistribute it and/or modify it under the same terms as the
112 L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.