Skip to content

Commit a775cb1

Browse files
authored
Expose query parameter for Schedule list (#538)
1 parent 8059ef7 commit a775cb1

File tree

4 files changed

+66
-3
lines changed

4 files changed

+66
-3
lines changed

src/Client/ScheduleClient.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,13 @@ public function getHandle(string $scheduleID, ?string $namespace = null): Schedu
144144
public function listSchedules(
145145
?string $namespace = null,
146146
int $pageSize = 0,
147+
string $query = '',
147148
): Paginator {
148149
// Build request
149150
$request = (new ListSchedulesRequest())
150151
->setNamespace($namespace ?? $this->clientOptions->namespace)
151-
->setMaximumPageSize($pageSize);
152+
->setMaximumPageSize($pageSize)
153+
->setQuery($query);
152154

153155
$loader = function (ListSchedulesRequest $request): \Generator {
154156
do {

src/Client/ScheduleClientInterface.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ public function getHandle(string $scheduleID, ?string $namespace = null): Schedu
4646
*
4747
* @param non-empty-string|null $namespace If null, the preconfigured namespace will be used.
4848
* @param int<0, max> $pageSize Maximum number of Schedule info per page.
49+
* @param string $query Temporal Visibility Query. {@link https://docs.temporal.io/visibility#list-filter}
4950
*
5051
* @return Paginator<ScheduleListEntry>
5152
*/
52-
public function listSchedules(?string $namespace = null, int $pageSize = 0): Paginator;
53+
public function listSchedules(?string $namespace = null, int $pageSize = 0, string $query = ''): Paginator;
5354
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Temporal\Tests\Acceptance\Extra\Update\ScheduleClient;
6+
7+
use PHPUnit\Framework\Attributes\Test;
8+
use Temporal\Client\Schedule\Action\StartWorkflowAction;
9+
use Temporal\Client\Schedule\Schedule;
10+
use Temporal\Client\Schedule\ScheduleHandle;
11+
use Temporal\Client\Schedule\ScheduleOptions;
12+
use Temporal\Client\Schedule\Spec\ScheduleSpec;
13+
use Temporal\Client\Schedule\Spec\ScheduleState;
14+
use Temporal\Client\ScheduleClientInterface;
15+
use Temporal\DataConverter\EncodedCollection;
16+
use Temporal\Tests\Acceptance\App\TestCase;
17+
18+
class ScheduleClientTest extends TestCase
19+
{
20+
#[Test]
21+
public function listSchedulesWithQuery(
22+
ScheduleClientInterface $client,
23+
): void
24+
{
25+
/** @var list<ScheduleHandle> $handle */
26+
$handle = [];
27+
// Create a new schedules
28+
for ($i = 0; $i < 12; $i++) {
29+
$handle[] = $client->createSchedule(
30+
Schedule::new()
31+
->withAction(StartWorkflowAction::new('TestWorkflow'))
32+
->withSpec(ScheduleSpec::new()->withStartTime('+1 hour'))
33+
->withState(ScheduleState::new()->withPaused(true)),
34+
ScheduleOptions::new()
35+
->withSearchAttributes(
36+
EncodedCollection::fromValues([
37+
'bar' => $i % 2 === 0 ? 4242 : 24,
38+
])
39+
)
40+
);
41+
}
42+
43+
try {
44+
$paginator = $client->listSchedules(
45+
pageSize: 5,
46+
query: 'bar = 4242'
47+
);
48+
49+
$this->assertCount(5, $paginator->getPageItems());
50+
51+
$next = $paginator->getNextPage();
52+
$this->assertNotNull($next);
53+
$this->assertCount(1, $next->getPageItems());
54+
} finally {
55+
foreach ($handle as $h) {
56+
$h->delete();
57+
}
58+
}
59+
}
60+
}

tests/Acceptance/Extra/Schedule/ScheduleUpdateTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace Temporal\Tests\Acceptance\Extra\Update\DynamicUpdate;
5+
namespace Temporal\Tests\Acceptance\Extra\Update\ScheduleUpdate;
66

77
use PHPUnit\Framework\Attributes\Test;
88
use Temporal\Client\Schedule\Action\StartWorkflowAction;

0 commit comments

Comments
 (0)