Fey-ORM-Mock

 view release on metacpan or  search on metacpan

lib/Fey/Object/Mock/Table.pm  view on Meta::CPAN

package Fey::Object::Mock::Table;
{
  $Fey::Object::Mock::Table::VERSION = '0.06';
}

use strict;
use warnings;

use Fey::Meta::Class::Schema;

use Moose;

extends 'Fey::Object::Table';

sub insert_many {
    my $class = shift;
    my @rows  = @_;

    $class->__record_insert($_) for @rows;

    return $class->SUPER::insert_many(@rows);
}

sub __record_insert {
    my $class = shift;
    my $vals  = shift;

    $class->__recorder->record_action(
        action => 'insert',
        class  => $class,
        values => $vals,
    );
}

sub update {
    my $self = shift;
    my %p    = @_;

    $self->__record_update( \%p );

    $self->SUPER::update(%p);
}

sub __record_update {
    my $self = shift;
    my $vals = shift;

    $self->__recorder->record_action(
        action => 'update',
        class  => ( ref $self ),
        values => $vals,
        pk     => { $self->pk_values_hash() },
    );
}

sub delete {
    my $self = shift;

    $self->__record_delete();

    $self->SUPER::delete(@_);
}

sub __record_delete {
    my $self = shift;

    $self->__recorder->record_action(
        action => 'delete',
        class  => ( ref $self ),
        pk     => { $self->pk_values_hash() },
    );
}

sub __recorder {
    my $self = shift;

    return Fey::Meta::Class::Schema->ClassForSchema( $self->Table->schema )
        ->Recorder();
}

sub _load_from_dbms {
    my $self = shift;

    if ( my $values = $self->Seeder()->next() ) {
        $self->_set_column_values_from_hashref($values);

        return;
    }

    return $self->SUPER::_load_from_dbms(@_);
}

{
    my %Seeder;



( run in 2.815 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )