parent
a3a9f2baba
commit
e01e9a96db
@ -0,0 +1,46 @@
|
||||
package NGCP::Schema::InflateColumn::DateTime::EpochMicro;
|
||||
use Sipwise::Base;
|
||||
use DateTime qw();
|
||||
|
||||
extends 'DBIx::Class';
|
||||
|
||||
our $VERSION = '2.003';
|
||||
|
||||
__PACKAGE__->load_components(qw(InflateColumn::DateTime));
|
||||
|
||||
# back compat
|
||||
sub add_columns {
|
||||
my ($class, @cols) = @_;
|
||||
my @columns;
|
||||
while (my $col = shift @cols) {
|
||||
my $info = ref $cols[0] ? shift @cols : {};
|
||||
if( my $type = delete $info->{ epoch_micro } ) {
|
||||
$info->{ inflate_datetime } = 'epoch_micro';
|
||||
if( $type =~ m{^[cm]time$} ) {
|
||||
__PACKAGE__->load_components( 'TimeStamp' );
|
||||
$info->{ set_on_create } = 1;
|
||||
$info->{ set_on_update } = 1 if $type eq 'mtime';
|
||||
}
|
||||
}
|
||||
push @columns, $col => $info;
|
||||
}
|
||||
$class->next::method(@columns);
|
||||
}
|
||||
|
||||
sub _inflate_to_datetime {
|
||||
my ($self, $value, $info, @rest) = @_;
|
||||
return $self->next::method($value, $info, @rest)
|
||||
unless $info->{data_type} eq "decimal"
|
||||
|| (exists $info->{inflate_datetime}
|
||||
&& $info->{inflate_datetime} eq 'epoch_micro');
|
||||
return DateTime->from_epoch(epoch => $value);
|
||||
}
|
||||
|
||||
sub _deflate_from_datetime {
|
||||
my ($self, $value, $info, @rest) = @_;
|
||||
return $self->next::method($value, $info, @rest)
|
||||
unless $info->{data_type} eq "decimal"
|
||||
|| (exists $info->{inflate_datetime}
|
||||
&& $info->{inflate_datetime} eq 'epoch_micro');
|
||||
return $value->epoch;
|
||||
}
|
Loading…
Reference in new issue