#!/usr/bin/perl

use strict;
use warnings;
use open ':std', ':encoding(UTF-8)';

use JSON::XS;
use FileHandle;
use Text::CSV::Easy(qw/csv_build csv_parse/);

use lib '/app/tools/common/lib';
use Common::Session;

my $dbx = Common::Session::getdbx('admindb');
foreach my $i ( 1 ... 6 ) {
    my $host = 'rpsdb0' . $i;
    my $dbh  = Common::Session::getdbh($host);
    my $sth  = $dbh->prepare(
        qq{
SELECT 
     t.table_name tablename,
     IF(
     	ROUND(t.data_length/t.avg_row_length),
     	ROUND(t.data_length/t.avg_row_length),
     	0
     ) rowcount,
     ROUND(t.data_length/(power(2,30)),4) data_gb,
     ROUND(t.index_length/(power(2,30)),4) index_gb,
     ROUND(((t.data_length + t.index_length) / power(2,30)),4) total_gb
FROM 
	information_schema.tables t
WHERE 1
	AND t.table_schema=?
}
    );
    my $rset = $dbx->resultset('Workspace::DbClient')->search( { 'db_host' => "rpsdb0" . $i } );
    while ( my $row = $rset->next ) {
        $sth->execute( $row->db_name );
        if ( $sth->rows ) {
            while ( my $href = $sth->fetchrow_hashref ) {
                my $dbtable = $dbx->resultset('Workspace::DbTable')->find_or_create( {
                        'tablename' => $href->{'tablename'}
                    },
                    { 'key' => 'uidx_tablename' }
                );
                my $line = csv_build( (
                        $row->client_id,    $dbtable->table_id,  $href->{'rowcount'},
                        $href->{'data_gb'}, $href->{'index_gb'}, $href->{'total_gb'}
                    )
                );
                print "\\N,$line\n";
            }
        }
    }
}
