diff --git a/lib/Lacuna/DB/ResultSet.pm b/lib/Lacuna/DB/ResultSet.pm new file mode 100644 index 00000000..54b42ca0 --- /dev/null +++ b/lib/Lacuna/DB/ResultSet.pm @@ -0,0 +1,8 @@ +package Lacuna::DB::ResultSet; + +no warnings qw(uninitialized); +use namespace::autoclean -except => ['meta']; + +use base 'DBIx::Class::ResultSet'; + +1; diff --git a/lib/Lacuna/DB/ResultSet/Schedule.pm b/lib/Lacuna/DB/ResultSet/Schedule.pm new file mode 100644 index 00000000..677592df --- /dev/null +++ b/lib/Lacuna/DB/ResultSet/Schedule.pm @@ -0,0 +1,28 @@ +package Lacuna::DB::ResultSet::Schedule; + +use Moose; +use utf8; +no warnings qw(uninitialized); + +extends 'Lacuna::DB::ResultSet'; + +# Find an existing schedule, and reschedule it +# +sub reschedule { + my ($self, $args) = @_; + + my ($schedule) = $self->search({ + parent_table => $args->{parent_table}, + parent_id => $args->{parent_id}, + task => $args->{task}, + }); + $schedule->delete if defined $schedule; + + $schedule = $self->create($args); + return $schedule; +} + + +no Moose; +__PACKAGE__->meta->make_immutable(inline_constructor => 0); +