package SL::DB::Manager::ValidityToken;

use strict;

use parent qw(SL::DB::Helper::Manager);

sub object_class { 'SL::DB::ValidityToken' }

use Carp;

__PACKAGE__->make_manager_methods;

sub cleanup {
  my ($class) = @_;
  $class->delete_all(where => [ valid_until => { lt => DateTime->now_local }]);
}

sub fetch_valid_token {
  my ($class, %params) = @_;

  croak "missing required parameter 'scope'" if !$params{scope};

  return undef if !$params{token};

  my $token_obj = $class->get_first(
    where => [
      scope       => $params{scope},
      token       => $params{token},
      valid_until => { ge => DateTime->now_local },
    ],
    for_update => 1);

  return $token_obj;
}

1;
