All pastes #341950 Raw Edit

Someone

public text v1 · immutable
·published 2007-02-06 00:05 UTC
rendered paste body
package STI::Person;
use strict;
use warnings;

use base 'DBIx::Class';

__PACKAGE__->load_components(qw/PK::Auto Core/);
__PACKAGE__->table('person');
__PACKAGE__->add_columns(
    id => {
        data_type => 'integer',
        is_auto_increment => 1,
    },
    name => {
        data_type => 'varchar',
        is_nullable => 1,   
    },
    employer => {
        data_type => 'varchar',
        is_nullable => 1, 
    },
    type => {
        data_type => 'varchar'
    }
);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->resultset_class('STI::Person::ResultSet');

sub insert {
    my ($self,@rest) = shift;
    $self->type(ref($self->result_source->source_name);
    $self->next::method(@_);
}

sub update {
    my ($self,@rest) = shift;
    $self->type($self->result_source->source_name);
    $self->next::method(@_);    
}


package STI::Person::ResultSet;
use base 'DBIx::Class::ResultSet';
sub search_rs {
    my ($self,@rest) = @_;
    my $ret = $self->next::method(@rest);
    $ret->{cond}->{type} = $self->result_source->source_name;
    return $ret;
}

1;