#!/usr/bin/perl

=encoding UTF-8
=cut

=head1 DESCRIPTION

=cut

# common modules
use strict;
use warnings FATAL => 'all';
use feature 'say';
use utf8;
use open qw(:std :utf8);

use DDP;
use Carp;
use Moment;
use List::Util qw(min);

use lib::abs qw(
    ../lib
);
use Partner::DB;

# global vars

# subs

# main
sub main {

    my $now = Moment->now();

    my @dbs = qw(
        dev
        ts
        ts1
        ts2
    );

    foreach my $db (@dbs) {
        say "## $db";

        my $last_update_dt;
        eval {
            my $se = get_db_partner2( server => $db );
            $last_update_dt = eval{$se->get_one(
                "SELECT create_time FROM information_schema.tables WHERE table_schema = 'partner' and table_name='users';",
            )};
        };

        say sprintf "Дата последенго обновления: %s (%s дней назад)",
            $last_update_dt // $@,
            !$last_update_dt ? 0 : int( ($now->get_timestamp() - Moment->new( dt => $last_update_dt )->get_timestamp()) / 86400 ),
            ;

        say '';
    }

    say '## docker';

    my $docker_is_installed = not system('which docker &> /dev/null');

    if ($docker_is_installed) {
        my @docker_images = sort map { /(partner2-db-[0-9-]+)/; $1 } `docker images|grep partner2-db-`;

        say 'Общее количество докерных образов с базой: ' . scalar @docker_images;
        my $count = min(scalar @docker_images, 5);

        if ($count) {
            say '';
            say "Последние образы:";
            foreach my $di (@docker_images[-5..-1]) {
                say " * $di";
            }

            my ($last_docker_image_date) = $docker_images[-1] =~ /-([0-9-]+)$/;

            say '';
            say sprintf
                'Дней с создания последнего докерного образа: %s',
                int( ($now->get_timestamp() - Moment->new( dt => $last_docker_image_date . ' 00:00:00')->get_timestamp()) / 86400 ),
                ;
        }

    } else {
        say 'На этой системе не установлен docker';
    }
    say '';

}
main();
__END__
