#! /usr/bin/env php
<?php

declare(strict_types=1);

namespace Gazelle;

require __DIR__ . '/../../lib/bootstrap.php';

$pg = new DB\Pg(PG_RW_DSN);
$pg->begin();

$n = $pg->query("
    delete from tgroup_vote_summary
");
echo "$n tgroup summaries removed\n";
$n = $pg->query("
    delete from tgroup_vote
");
echo "$n user votes removed\n";

$n      = 0;
$offset = 0;
$chunk  = 10000;
while (true) {
    $inserted = $pg->query('
        insert into tgroup_vote (id_tgroup, id_user, created, upvote)
        select "GroupID",
            "UserID",
            "Time",
            case when upvote = 1 then true else false end
        from relay.users_votes
        where "GroupID" > $1
        order by "GroupID"
        limit $2
        ', $offset, $chunk
    );
    if (!$inserted) {
        break;
    }
    $n += $inserted;
    $offset = $pg->scalarex('
        select max(id_tgroup) from tgroup_vote
    ');
    echo ".";
}

echo "\n$n user votes inserted\n";

$n = $pg->query(<<<END_SQL
    insert into tgroup_vote_summary (id_tgroup, total, upvote)
    select id_tgroup,
        count(*),
        sum(case when upvote is true then 1 else 0 end)
    from tgroup_vote
    group by id_tgroup
END_SQL
);
echo "$n tgroup summaries inserted\n";

$pg->commit();
