1# (c) Sam Vilain, 2004 2 3package Tangram::Type::Date::Cooked; 4 5use strict; 6use Tangram::Type::TimeAndDate; 7use vars qw(@ISA); 8@ISA = qw( Tangram::Type::TimeAndDate ); 9 10$Tangram::Schema::TYPES{cookeddatetime} = Tangram::Type::Date::Cooked->new; 11 12sub get_importer 13{ 14 my $self = shift; 15 my $context = shift; 16 my $closure = shift; 17 my $type = shift || "date"; 18 my $name = $self->{name}; 19 20 return sub { 21 my ($obj, $row, $context) = @_; 22 my $val = shift @$row; 23 24 $val = $context->{storage}->from_dbms($type, $val) 25 if defined $val; 26 $val = $closure->($val) if defined $val and $closure; 27 28 $obj->{$name} = $val; 29 } 30} 31 32sub get_exporter 33{ 34 my $self = shift; 35 my $context = shift; 36 my $closure = shift; 37 my $type = shift || "date"; 38 my $name = $self->{name}; 39 40 return sub { 41 my ($obj, $context) = @_; 42 my $val = $obj->{$name}; 43 44 $val = $closure->($val) if defined $val and $closure; 45 $val = $context->{storage}->to_dbms($type, $val) 46 if defined $val; 47 48 return $val; 49 } 50} 511; 52