package MyApp::DBIC::ResultSource;
use base qw/DBIx::Class/;
use strict;
use Storable;

__PACKAGE__->mk_group_accessors(inherited => qw/schema_by_class/);

sub STORABLE_freeze {
    my ($self, $cloning) = @_;
    my $new_source_handle = bless({
        schema_class   => ref($self->{_source_handle}{schema}),
        source_moniker => $self->{_source_handle}{source_moniker},
    }, 'DBIx::Class::ResultSourceHandle');

    return Storable::freeze({
        %$self,
        _source_handle => $new_source_handle,
    });
}

sub STORABLE_thaw {
    my ($self, $cloning, $serialized) = @_;
    %$self = %{ Storable::thaw($serialized) };
    $self->{_source_handle}{schema} = $self->schema_by_class->{
        delete $self->{_source_handle}{schema_class}
    };
}

1;

