From fbeff3ff0244077ac00d7772d19055b5ec8d2cd8 Mon Sep 17 00:00:00 2001 From: Darin McBride Date: Wed, 30 Dec 2015 11:04:21 -0700 Subject: [PATCH] Make it impossible to create spies without a date created stamp properly. --- lib/Lacuna/DB/Result/Spies.pm | 4 ++++ lib/Lacuna/DB/ResultBase.pm | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/Lacuna/DB/Result/Spies.pm b/lib/Lacuna/DB/Result/Spies.pm index 3856d1d2..d44c46df 100644 --- a/lib/Lacuna/DB/Result/Spies.pm +++ b/lib/Lacuna/DB/Result/Spies.pm @@ -46,6 +46,10 @@ __PACKAGE__->add_columns( next_task => { data_type => 'varchar', size => 30, is_nullable => 0, default_value => 'Idle' }, ); +sub _default_date_created { + DateTime->now +} + __PACKAGE__->belongs_to('empire', 'Lacuna::DB::Result::Empire', 'empire_id'); __PACKAGE__->belongs_to('from_body', 'Lacuna::DB::Result::Map::Body', 'from_body_id'); __PACKAGE__->belongs_to('on_body', 'Lacuna::DB::Result::Map::Body', 'on_body_id'); diff --git a/lib/Lacuna/DB/ResultBase.pm b/lib/Lacuna/DB/ResultBase.pm index e0b31280..a47f0cad 100644 --- a/lib/Lacuna/DB/ResultBase.pm +++ b/lib/Lacuna/DB/ResultBase.pm @@ -12,7 +12,15 @@ sub new { my $self = $class->SUPER::new(@_); foreach my $col ($self->result_source->columns) { my $default = $self->result_source->column_info($col)->{default_value}; - $self->$col($default) if (defined $default && !defined $self->$col()); + if (defined $default && !defined $self->$col()) { + $self->$col($default); + } + + # if the class has a method for _default_$col, call it to determine the default + # in code. + if (!defined $self->$col() && (my $can = $self->can("_default_$col"))) { + $self->$col($can->($self)); + } } return $self; } -- 2.51.2