NAME

DBIx::Class::InflateColumn::Time - Inflate and Deflate "time" columns into DateTime::Duration Objects

SYNOPSIS

package HorseTrack::Database::Schema::Result::Race;
use base 'DBIx::Class::Core';

use strict;
use warnings;

__PACKAGE__->load_components("InflateColumn::Time");

__PACKAGE__->add_columns(
    race_number => { data_type => 'integer'},
    duration    => { data_type => 'time'},
);

DESCRIPTION

This module can be used to automagically inflate database columns of data type "time" into DateTime::Duration objects. It is used similiar to other InflateColumn DBIx modules.

Once your Result is properly defined you can now pass DateTime::Duration objects into columns of data_type time and retrieve DateTime::Duration objects from these columns as well

Inflation

Inflation occurs whenever the data is being taken FROM the database. In this case the database is storing the value with data_type of time, upon inflation a DateTime::Duration object is returned from the resultset.

package HorseTrack::Race;

use strict;
use warnings;

use Moose;
use namespace::autoclean;

use DateTime::Duration;

has 'race_number' => ( is => 'rw', isa => 'Int' );
has 'duration'    => ( is => 'rw', isa => 'DateTime::Duration' );

sub retrieve {
    my $self = shift;

    my $result = $schema->resultset('...')->search({ race_number => 1 })->single;

    my $race = $self->new({
        race_number => $result->race_number,
        duration    => $result->duration,
    });

    return $race;
}

__PACKAGE__->meta->make_immutable();
1;

Deflation

Deflation occurs whenever the data is being taken TO the database. In this case an object of type DateTime::Duration is being stored into the a database columns with a data_type of "time". Using the same object from the Inflation example:

$schema->resultset('...')->create({
    race_number => $self->race_number,
    duration    => $self->duration,
});

METHODS

Strictly speaking, you don't actually call any of these methods yourself. DBIx handles the magic provided you have included the InflateColumn::Time component in your Result.

Therefore, there are no public methods to be consumed.

AUTHORS

Robert Stone <drzigman AT cpan DOT org >

COPYRIGHT & LICENSE

Copyright 2013 Robert Stone

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU Lesser General Public License as published by the Free Software Foundation; or any compatible license.

See http://dev.perl.org/licenses/ for more information.