<?php

use GW2Spidy\DB\ItemQuery;
use GW2Spidy\DB\SellListingQuery;
use GW2Spidy\NewQueue\ItemListingDBQueueItem;
use GW2Spidy\NewQueue\ItemListingDBQueueManager;
use GW2Spidy\NewQueue\ItemListingDBQueueWorker;
require dirname(__FILE__) . '/../autoload.php';
$queueManager = new ItemListingDBQueueManager();
$queueWorker = new ItemListingDBQueueWorker($queueManager);
$item = ItemQuery::create()->findPk($argv[1]);
if (!$item) {
    die("failed to find item");
}
var_dump($item->getName(), $item->getItemTypeId());
$queueItem = new ItemListingDBQueueItem($item);
var_dump($queueItem->getItem()->getQueuePriority());
if (isset($argv[2]) && strstr("search", $argv[2])) {
    $queueItem = array($queueItem);
}
var_dump(is_array($queueItem));
$queueWorker->work($queueItem);
$l = SellListingQuery::create()->filterByItemId($item->getDataId())->orderByListingDatetime(\Criteria::DESC)->limit(1)->findOne();
var_dump($l->toArray());
define('METHOD_SEARCH_JSON', 'search.json');
define('METHOD_LISTINGS_JSON', 'listings.json');
require dirname(__FILE__) . '/../autoload.php';
function logg($msg)
{
    echo "[" . date("Y-m-d H:i:s") . "] " . $msg;
}
$con = Propel::getConnection();
$debug = in_array('--debug', $argv);
if ($debug || defined('SQL_LOG_MODE') && SQL_LOG_MODE) {
    $con->setLogLevel(\Propel::LOG_DEBUG);
    $con->useDebug(true);
}
$slotManager = RequestSlotManager::getInstance();
$queueManager = new ItemListingDBQueueManager();
$queueWorker = new ItemListingDBQueueWorker($queueManager);
/*
 * $run up to $max in 1 process, then exit so process gets revived
 *  this is to avoid any memory problems (propel keeps a lot of stuff in memory)
 */
$run = 0;
$max = 100;
while ($run < $max) {
    sleep(4);
    $slot = $slotManager->getAvailableSlot();
    if (!$slot) {
        $sleep = $slotManager->getSlotsPerSecond() * 2;
        logg("no slots, sleeping [{$sleep}] ... \n");
        usleep($sleep * 1000 * 1000);
        continue;
    }