mirror of
https://github.com/verdigado/groupfolder_tags.git
synced 2024-11-23 21:40:27 +01:00
parent
8440b823cc
commit
bcda9ab505
4 changed files with 69 additions and 0 deletions
|
@ -20,5 +20,6 @@
|
|||
<commands>
|
||||
<command>OCA\GroupfolderTags\Command\Tag</command>
|
||||
<command>OCA\GroupfolderTags\Command\GetTag</command>
|
||||
<command>OCA\GroupfolderTags\Command\GetFolder</command>
|
||||
</commands>
|
||||
</info>
|
||||
|
|
45
lib/Command/GetFolder.php
Normal file
45
lib/Command/GetFolder.php
Normal file
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
namespace OCA\GroupfolderTags\Command;
|
||||
|
||||
use OCP\DB\Exception;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class GetFolder extends TagCommand {
|
||||
protected function configure(): void {
|
||||
$this
|
||||
->setName('groupfolder-tags:get-folder')
|
||||
->setDescription('Get Groupfolders with tag key optionally filtered by tag value.')
|
||||
->addArgument('key', InputArgument::REQUIRED, 'Key of the tag')
|
||||
->addArgument('value', InputArgument::OPTIONAL, 'Value of the tag');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int {
|
||||
$tagKey = $input->getArgument('key');
|
||||
$tagValue = $input->getArgument('value');
|
||||
|
||||
try {
|
||||
$results = $this->service->findFolder($tagKey, $tagValue);
|
||||
|
||||
if (empty($results)) {
|
||||
$output->writeln("<error>Could not find Groupfolders for tag</error>");
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach ($results as $result) {
|
||||
$folder = $this->folderManager->getFolder($result['group_folder_id'], $this->rootFolder->getMountPoint()->getNumericStorageId());
|
||||
if ($folder === false) {
|
||||
$output->writeln("<error>Folder not found: {$result['group_folder_id']}</error>");
|
||||
continue;
|
||||
}
|
||||
$output->writeln(json_encode($folder));
|
||||
}
|
||||
return 0;
|
||||
} catch (Exception $e) {
|
||||
$output->writeln("<error>Exception \"{$e->getMessage()}\" at {$e->getFile()} line {$e->getLine()}</error>");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -91,4 +91,20 @@ class TagMapper extends QBMapper {
|
|||
|
||||
return $this->findEntities($qb);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function findFolder(string $tagKey, ?string $tagValue): array {
|
||||
$qb = $this->db->getQueryBuilder();
|
||||
$qb->selectDistinct('group_folder_id')
|
||||
->from(self::TABLENAME)
|
||||
->where($qb->expr()->eq('tag_key', $qb->createNamedParameter($tagKey)));
|
||||
|
||||
if(isset($tagValue)) {
|
||||
$qb->andWhere($qb->expr()->eq('tag_value', $qb->createNamedParameter($tagValue)));
|
||||
}
|
||||
|
||||
return $qb->executeQuery()->fetchAll();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -78,4 +78,11 @@ class TagService {
|
|||
public function findByGroupFolderAndKey(int $groupFolderId, ?string $key): array {
|
||||
return $this->mapper->findByGroupFolderAndKey($groupFolderId, $key);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \OCP\DB\Exception
|
||||
*/
|
||||
public function findFolder(string $key, ?string $value): array {
|
||||
return $this->mapper->findFolder($key, $value);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue