Commit | Line | Data |
69ac22ee |
1 | package DBIx::Class::Serialize::Storable; |
ed28f830 |
2 | use strict; |
bf5ecff9 |
3 | use warnings; |
ed28f830 |
4 | |
70c28808 |
5 | use Storable(); |
6 | use DBIx::Class::Carp; |
64c50e81 |
7 | use namespace::clean; |
1b6fe47d |
8 | |
9 | carp 'The Serialize::Storable component is now *DEPRECATED*. It has not ' |
10 | .'been providing any useful functionality for quite a while, and in fact ' |
11 | .'destroys prefetched results in its current implementation. Do not use!'; |
12 | |
13 | |
ed28f830 |
14 | sub STORABLE_freeze { |
e60dc79f |
15 | my ($self, $cloning) = @_; |
ed28f830 |
16 | my $to_serialize = { %$self }; |
e60dc79f |
17 | |
7cfda9a6 |
18 | # Dynamic values, easy to recalculate |
19 | delete $to_serialize->{$_} for qw/related_resultsets _inflated_column/; |
e60dc79f |
20 | |
26148d36 |
21 | return (Storable::nfreeze($to_serialize)); |
ed28f830 |
22 | } |
23 | |
24 | sub STORABLE_thaw { |
7244b45f |
25 | my ($self, $cloning, $serialized) = @_; |
e60dc79f |
26 | |
7244b45f |
27 | %$self = %{ Storable::thaw($serialized) }; |
ed28f830 |
28 | } |
29 | |
19345968 |
30 | 1; |
31 | |
32 | __END__ |
33 | |
75d07914 |
34 | =head1 NAME |
19345968 |
35 | |
26148d36 |
36 | DBIx::Class::Serialize::Storable - hooks for Storable nfreeze/thaw |
19345968 |
37 | |
1b6fe47d |
38 | =head1 DEPRECATION NOTE |
39 | |
40 | This component is now B<DEPRECATED>. It has not been providing any useful |
41 | functionality for quite a while, and in fact destroys prefetched results |
42 | in its current implementation. Do not use! |
43 | |
19345968 |
44 | =head1 SYNOPSIS |
45 | |
46 | # in a table class definition |
69ac22ee |
47 | __PACKAGE__->load_components(qw/Serialize::Storable/); |
9b83fccd |
48 | |
19345968 |
49 | # meanwhile, in a nearby piece of code |
24d67825 |
50 | my $cd = $schema->resultset('CD')->find(12); |
2053ab2a |
51 | # if the cache uses Storable, this will work automatically |
52 | $cache->set($cd->ID, $cd); |
19345968 |
53 | |
54 | =head1 DESCRIPTION |
55 | |
fb13a49f |
56 | This component adds hooks for Storable so that result objects can be |
57 | serialized. It assumes that your result object class (C<result_class>) is |
2053ab2a |
58 | the same as your table class, which is the normal situation. |
19345968 |
59 | |
9b83fccd |
60 | =head1 HOOKS |
61 | |
62 | The following hooks are defined for L<Storable> - see the |
63 | documentation for L<Storable/Hooks> for detailed information on these |
64 | hooks. |
65 | |
66 | =head2 STORABLE_freeze |
67 | |
68 | The serializing hook, called on the object during serialization. It |
69 | can be inherited, or defined in the class itself, like any other |
70 | method. |
71 | |
72 | =head2 STORABLE_thaw |
73 | |
74 | The deserializing hook called on the object during deserialization. |
75 | |
0c11ad0e |
76 | =head1 AUTHOR AND CONTRIBUTORS |
19345968 |
77 | |
0c11ad0e |
78 | See L<AUTHOR|DBIx::Class/AUTHOR> and L<CONTRIBUTORS|DBIx::Class/CONTRIBUTORS> in DBIx::Class |
19345968 |
79 | |
80 | =head1 LICENSE |
81 | |
82 | You may distribute this code under the same terms as Perl itself. |
83 | |
84 | =cut |