David Cantrell

NAME

DBIx::Class::SingletonRows - make database rows returned by DBIx::Class into singletons

DESCRIPTION

When you do this with DBIx::Class:

    my $row = $schema->...

    my $row2 = update_and_return();

    sub update_and_return {
        my $row = $schema->...
        $row->somefield("HLAGH");
        $row->update();
        return $row;
    }

then even if both $row and $row2 have the same row_id, they'll have different values for somefield. This irritates me, so this mixin fixes it.

SYNOPSIS

When creating the class that respresents your table, load the 'SingletonRows' component thus. Make sure to load it before you load the 'Core' component:

    package MyProject::DB::Employee;

    use base qw(DBIx::Class);

    __PACKAGE__->load_components(qw(SingletonRows Core));

    __PACKAGE__->table('employees');
    ...

METHODS

It wraps around DBIx::Class::Row's inflate_result() method so that it always returns singletons.

BUGS and WARNINGS

This should be considered to be pre-production code. It's probably chock full of exciting data-eating bugs.

AUTHOR, COPYRIGHT and LICENCE

Written by David Cantrell <david@cantrell.org.uk>

Copyright 2008 Outcome Technologies Ltd

This software is free-as-in-speech software, and may be used, distributed, and modified under the terms of either the GNU General Public Licence version 2 or the Artistic Licence. It's up to you which one you use. The full text of the licences can be found in the files GPL2.txt and ARTISTIC.txt, respectively.