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