#!/usr/bin/perl

=encoding utf8

=head2 NAME

    cleanup_local_db_ut.pl

=head2 DESCRIPTION

    Простенький скрипт для очистки локального MySQL от оставшихся временных баз для юнит-тестов

=cut

use Direct::Modern;

use Yandex::DBTools;
use Yandex::Log;
use Yandex::TimeCommon;

use constant DELAY_BEFORE_DELETE => 3 * 24 * 60 * 60;

$Yandex::DBTools::CONFIG_FILE = '/etc/dbtools/db-config.unit-tests.yaml';
$Yandex::DBTools::DONT_SEND_LETTERS = 1;

my $log = Yandex::Log->new(
    no_log => 1,
    no_date => 1,
    use_syslog => 1,
    syslog_prefix => 'devscripts',
    log_file_name => "cleanup_mysql_unittest.log",
);

$log->out('START');

my $dbh = get_dbh('unit_tests');
my $now = time;

my $dbs = get_one_column_sql($dbh, 'show databases like "unit_tests_%"');

foreach my $db (@$dbs) {
    if ($db =~ m/^unit_tests_(?:.+)_(?:[0-9]+)_(?:[0-9]+)_([0-9]{14})(?:_[0-9]+)?$/) {
        # unit_tests_orlenko_617015_3_20150925134908_1
        # unit_tests_orlenko_811085_0_20150929190126
        if ($now - mysql2unix($1) > DELAY_BEFORE_DELETE) {
            $log->out("Drop old database $db");
            do_sql($dbh, "DROP DATABASE $db");
        }
    } else {
        $log->out("can't parse database name: $db");
    }
}

$log->out('FINISH');
