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

declare(strict_types=1);

namespace fulldecent\GoogleSheetsEtl;

require_once __DIR__ . '/../vendor/autoload.php';
set_time_limit(300);
error_reporting(E_ALL);

// Banner //////////////////////////////////////////////////////////////////////
echo 'GOOGLE SHEETS ETL TOOL' . PHP_EOL;

if (!is_array($argv) || count($argv) < 4) {
    echo 'usage: ' . ($argv[0] ?? 'google-sheets-etl') . ' GOOGLE_KEY_JSON ETL_SCHEMA_JSON DATABASE_DSN [DATABASE_USERNAME [DATABASE_PASS]]' . PHP_EOL;
    die();
}

// Program /////////////////////////////////////////////////////////////////////

$googleServiceAccountCredentialFile = $argv[1];
$etlSchemaFile = $argv[2];
$databaseDsn = $argv[3];
$databaseUsername = $argv[4] ?? null;
$databasePassword = $argv[5] ?? null;

$database = new \PDO($databaseDsn, $databaseUsername, $databasePassword, [
    \PDO::ATTR_PERSISTENT => false,
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
]);

$tasks = new Tasks($googleServiceAccountCredentialFile, $database);
$tasks->setConfiguration($etlSchemaFile);
$tasks->databaseAgent->setUpAccounting();

echo 'Service account: ' . $tasks->googleSheetsAgent->getAccountName() . PHP_EOL;

$tasks->loadSomeNewerSpreadsheets();