#------------------------------------------------------------
# Copyright (C) 2008 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package Job::DB::Item::JobSkipRule;

use strict;
use lib '/app/tools/common/lib';
use Common::DB::Item;
use Common::RSApp;
use Common::Assert;

use base 'Common::DB::Item';

use constant kTable => 'job_skip_rule';
use constant kDB    => Common::DB::Item::kCommonDB();

#    my $skipClause = Job::DB::Item::JobSkipRule->CompileSkipSQL();
#
sub CompileSkipSQL {
    my ($class) = @_;

    my $dbo = Common::RSApp::GetCommonDB();

    my @parts;

    my $rules = $class->GetAll();
    while ( my $rule = $rules->next() ) {
        my @subParts;
        if ( $rule->client_id() ) {
            push @subParts, "job.client_id = " . $rule->client_id();
        }

        if ( defined $rule->class() ) {
            push @subParts, "job.class = " . $dbo->DBQuote( $rule->class() );
        }

        if ( defined $rule->subclass() ) {
            push @subParts, "job.subclass = " . $dbo->DBQuote( $rule->subclass() );
        }

        if ( scalar @subParts ) {
            push @parts, join( ' AND ', @subParts );
        }
    }

    my $skipClause;
    if ( scalar @parts ) {
        $skipClause = join( ' OR ', @parts );
    }
    return $skipClause;
}

sub getCacheDate {
    my $class = shift;
    my $date  = shift;
    my $dbo   = Common::RSApp::GetCommonDB;

    my $sql = "SHOW TABLE STATUS WHERE Name =  " . $class->quote(kTable);
    $sql .= " AND Update_time > " . $class->quote($date) if ($date);

    #Common::Log::Debug( "QUERY: $sql" );

    my $sth = $dbo->DoCmd($sql) || return;
    my $result = $sth->fetchrow_hashref();

    return $result->{Update_time};
}

sub getTableMd5 {
    my $self = shift;

    my $dbo = Common::RSApp::GetCommonDB;
    my $sql = "CHECKSUM TABLE " . kTable;
    my $sth = $dbo->DoCmd($sql) || return 0;
    my $result = $sth->fetchrow_hashref();

    return $result->{Checksum};
}

1;
