private function registerSet() { $command = $this->register('set'); // set arguments $command->setDefinition(array(new InputArgument('query', InputArgument::REQUIRED, 'Phrase to search'), new InputArgument('id', InputArgument::OPTIONAL, 'Query identifier'), new InputOption('filters', null, InputOption::VALUE_REQUIRED, 'Filters data'))); // set description $command->setDescription('Adds/updates query to search on allegro'); // set action $command->setCode(function (InputInterface $input, OutputInterface $output) { // storage $storage = QueryStorage::getInstance(); // create data $data = QueryStorage::createQuery($input->getArgument('query'), $input->getOption('filters')); // existing ids $ids = $storage->getIds(); // set/update $id = QueryStorage::getInstance()->set($data, $input->getArgument('id')); // save QueryStorage::getInstance()->save(); // write output $output->writeln(sprintf('%s query: <info>%s</info> to database with ID: <info>%s</info>', in_array($id, $ids) ? 'Updated' : 'Added', QueryStorage::formatQuery($data), $id)); }); }