Add support for search query in DO import command

Relates: #9648
This commit is contained in:
Daniel Siepmann 2022-01-26 14:43:14 +01:00
parent 8044ddf30f
commit 4bc4f34525
6 changed files with 97 additions and 3 deletions

View file

@ -49,6 +49,11 @@ class DestinationDataImportCommand extends Command
InputArgument::OPTIONAL, InputArgument::OPTIONAL,
'What is the region uid?' 'What is the region uid?'
); );
$this->addArgument(
'query',
InputArgument::OPTIONAL,
'What is the additional query "q" parameter?'
);
} }
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output)
@ -62,11 +67,17 @@ class DestinationDataImportCommand extends Command
$regionUid = null; $regionUid = null;
} }
$query = $input->getArgument('query');
if (is_string($query) === false) {
$query = '';
}
return $this->destinationDataImportService->import(new Import( return $this->destinationDataImportService->import(new Import(
$input->getArgument('rest-experience'), $input->getArgument('rest-experience'),
$input->getArgument('storage-pid'), $input->getArgument('storage-pid'),
$regionUid, $regionUid,
$input->getArgument('files-folder') $input->getArgument('files-folder'),
$query
)); ));
} }
} }

View file

@ -28,16 +28,23 @@ class Import
*/ */
private $filesFolder; private $filesFolder;
/**
* @var string
*/
private $searchQuery;
public function __construct( public function __construct(
string $restExperience, string $restExperience,
int $storagePid, int $storagePid,
?int $regionUid, ?int $regionUid,
string $filesFolder string $filesFolder,
string $searchQuery
) { ) {
$this->restExperience = $restExperience; $this->restExperience = $restExperience;
$this->storagePid = $storagePid; $this->storagePid = $storagePid;
$this->regionUid = $regionUid; $this->regionUid = $regionUid;
$this->filesFolder = $filesFolder; $this->filesFolder = $filesFolder;
$this->searchQuery = $searchQuery;
} }
public function getRestExperience(): string public function getRestExperience(): string
@ -59,4 +66,9 @@ class Import
{ {
return $this->filesFolder; return $this->filesFolder;
} }
public function getSearchQuery(): string
{
return $this->searchQuery;
}
} }

View file

@ -40,6 +40,7 @@ class UrlFactory
'mode' => $this->settings['restMode'] ?? '', 'mode' => $this->settings['restMode'] ?? '',
'limit' => $this->settings['restLimit'] ?? '', 'limit' => $this->settings['restLimit'] ?? '',
'template' => $this->settings['restTemplate'] ?? '', 'template' => $this->settings['restTemplate'] ?? '',
'q' => $import->getSearchQuery()
]; ];
$parameter = array_filter($parameter); $parameter = array_filter($parameter);

View file

@ -0,0 +1,30 @@
2.3.0
=====
Breaking
--------
Nothing
Features
--------
* Add new option ``query`` to ``DestinationDataImportCommand``.
It is appended as ``q`` parameter to the initial search URL to fetch data for import.
The value is documented at https://developer.et4.de/reference/current/#eT4META-search-param-q.html.
Further documentation can be found at https://developer.et4.de/reference/current/#eT4META-search-querylanguage-Introduction.html.
Fixes
-----
Nothing
Tasks
-----
Nothing
Deprecation
-----------
Nothing

View file

@ -19,6 +19,7 @@ class ImportTest extends TestCase
'', '',
0, 0,
null, null,
'',
'' ''
); );
@ -37,6 +38,7 @@ class ImportTest extends TestCase
'experience', 'experience',
0, 0,
null, null,
'',
'' ''
); );
@ -55,6 +57,7 @@ class ImportTest extends TestCase
'', '',
20, 20,
null, null,
'',
'' ''
); );
@ -73,6 +76,7 @@ class ImportTest extends TestCase
'', '',
0, 0,
30, 30,
'',
'' ''
); );
@ -91,7 +95,8 @@ class ImportTest extends TestCase
'', '',
0, 0,
null, null,
'test/folder' 'test/folder',
''
); );
self::assertSame( self::assertSame(
@ -99,4 +104,23 @@ class ImportTest extends TestCase
$subject->getFilesFolder() $subject->getFilesFolder()
); );
} }
/**
* @test
*/
public function returnsSearchQuery(): void
{
$subject = new Import(
'',
0,
null,
'test/folder',
'name:"Test"'
);
self::assertSame(
'name:"Test"',
$subject->getSearchQuery()
);
}
} }

View file

@ -74,6 +74,7 @@ class UrlFactoryTest extends TestCase
'import' => (function () { 'import' => (function () {
$import = $this->prophesize(Import::class); $import = $this->prophesize(Import::class);
$import->getRestExperience()->willReturn('experience'); $import->getRestExperience()->willReturn('experience');
$import->getSearchQuery()->willReturn('');
return $import; return $import;
})(), })(),
@ -91,6 +92,7 @@ class UrlFactoryTest extends TestCase
'import' => (function () { 'import' => (function () {
$import = $this->prophesize(Import::class); $import = $this->prophesize(Import::class);
$import->getRestExperience()->willReturn(''); $import->getRestExperience()->willReturn('');
$import->getSearchQuery()->willReturn('');
return $import; return $import;
})(), })(),
@ -103,6 +105,7 @@ class UrlFactoryTest extends TestCase
'import' => (function () { 'import' => (function () {
$import = $this->prophesize(Import::class); $import = $this->prophesize(Import::class);
$import->getRestExperience()->willReturn('experience'); $import->getRestExperience()->willReturn('experience');
$import->getSearchQuery()->willReturn('');
return $import; return $import;
})(), })(),
@ -114,6 +117,19 @@ class UrlFactoryTest extends TestCase
], ],
'expectedResult' => 'https://example.com/path?experience=experience&licensekey=licenseKey&limit=restLimit&template=restTemplate', 'expectedResult' => 'https://example.com/path?experience=experience&licensekey=licenseKey&limit=restLimit&template=restTemplate',
], ],
'With search query' => [
'import' => (function () {
$import = $this->prophesize(Import::class);
$import->getRestExperience()->willReturn('experience');
$import->getSearchQuery()->willReturn('name:"Test Something"');
return $import;
})(),
'settings' => [
'restUrl' => 'https://example.com/path',
],
'expectedResult' => 'https://example.com/path?experience=experience&q=name%3A%22Test+Something%22',
],
]; ];
} }
} }