#!/usr/bin/perl -w
use strict;

use Pod::Usage;
use Getopt::Long;
use FindBin qw($Bin);

use lib "$Bin/../lib";
use Util::TimeHelper;
use SqlBase;
use Exclude;

$|++;

=head1 SYNOPSIS

 $exe -c cluster -t table -node node -t 10mins -u user

 $exe -c cluster -t table -node node --free

 $exe -c cluster -t table -u user

=cut

my ( $cluster, $table, $nodes, $time, $user, $unlock );

my %pod_param = ( -input => __FILE__, -output => \*STDERR );

GetOptions
(
    "cluster=s" => \$cluster,
    "table=s"   => \$table,
    "node=s"    => \$nodes,
    "user=s"    => \$user,
    "due=i"     => \$time,
    "free"    => \$unlock,
) or Pod::Usage::pod2usage( %pod_param );

die Pod::Usage::pod2usage( %pod_param )
    unless $cluster && $table;

$time = TimeHelper::rel2sec( $time ) if $time;
$nodes ||= 'ALL';

my $conf = SqlBase::conf_check( "$Bin/../config.yaml" );
my $recorder = Exclude->new( $conf );

unless ( $unlock )
{
    die Pod::Usage::pod2usage( %pod_param ) unless $user;
    $recorder->set
    ( 
        cluster => $cluster."[$table]",
        node => $_,
        expire => time + ( $time || 300 ),
        user => $user
    );
}
else
{
    $recorder->delete( [ [ $cluster."[$table]", $_ ] ] );
}
