package SGO::Sudoku;
use 5.010;
use utf8;
use strict;
use warnings;

use Exporter qw(import);
our @EXPORT_OK = qw(get_sudoku_ymd check_sudoku_date);

use SGO qw(cache get_dbh);
use Date::Simple qw(today);

sub get_sudoku_ymd {
    my ($year, $month, $day) = @_;
    my $ymd = sprintf '%04d-%02d-%02d', $year, $month, $day;
    my $cache_key = "sudoku-$ymd";
    cache($cache_key, sub {
        my $dbh = get_dbh;
        my $q = $dbh->prepare(qq/
            SELECT field, solved FROM sudoku_ro WHERE day = ? LIMIT 1
        /);
        $q->execute($ymd);
        my @d = $q->fetchrow_array;
        return unless @d;
        return {
            field       => $d[0],
            solved      => $d[1],
        }
    });
}

sub check_sudoku_date {
    my $date = shift;
    return $date ge '2006-06-25' && $date le today();
}

1;
