Skip to content

Commit 8e36832

Browse files
committed
Add Redis Adapter
1 parent e8d698b commit 8e36832

File tree

11 files changed

+23
-32
lines changed

11 files changed

+23
-32
lines changed

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ services:
1818
image: mysql:8.3.0
1919
restart: unless-stopped
2020
ports:
21-
- "3308:3306"
21+
- "3306:3306"
2222
environment:
2323
MYSQL_DATABASE: test_db
2424
MYSQL_ROOT_PASSWORD: password
@@ -73,7 +73,7 @@ services:
7373
restart: unless-stopped
7474
ports:
7575
- "1025:1025"
76-
- "1080:8025"
76+
- "1080:1080"
7777
networks:
7878
- bowphp_network
7979
healthcheck:

src/Mail/MailQueueTask.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,6 @@ public function process(): void
6060
*/
6161
public function onException(Throwable $e): void
6262
{
63-
$this->deleteJob();
63+
$this->deleteTask();
6464
}
6565
}

src/Notifier/Adapters/TelegramChannelAdapter.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class TelegramChannelAdapter implements ChannelAdapterInterface
1515
/**
1616
* @var string
1717
*/
18-
private string $botToken;
18+
private ?string $botToken;
1919

2020
/**
2121
* Constructor
@@ -25,10 +25,6 @@ class TelegramChannelAdapter implements ChannelAdapterInterface
2525
public function __construct()
2626
{
2727
$this->botToken = config('messaging.telegram.bot_token');
28-
29-
if (!$this->botToken) {
30-
throw new InvalidArgumentException('The Telegram bot token is required');
31-
}
3228
}
3329

3430
/**
@@ -51,6 +47,10 @@ public function send(Model $context, Notifier $notifier): void
5147
throw new InvalidArgumentException('The chat ID and message are required for Telegram');
5248
}
5349

50+
if (!$this->botToken) {
51+
throw new InvalidArgumentException('The Telegram bot token is required');
52+
}
53+
5454
$client = new HttpClient();
5555
$endpoint = "https://api.telegram.org/bot{$this->botToken}/sendMessage";
5656

src/Notifier/NotifierQueueTask.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,6 @@ public function process(): void
5252
*/
5353
public function onException(Throwable $e): void
5454
{
55-
$this->deleteJob();
55+
$this->deleteTask();
5656
}
5757
}

src/Queue/Adapters/BeanstalkdAdapter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ private function logError(Throwable $exception): void
232232
error_log($exception->getMessage());
233233

234234
try {
235-
app("logger")->error($exception->getMessage(), $exception->getTrace());
235+
logger()->error($exception->getMessage(), $exception->getTrace());
236236
} catch (Throwable $loggerException) {
237237
// Logger not available, already logged to error_log
238238
}

src/Queue/Adapters/DatabaseAdapter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ private function logError(Throwable $exception): void
218218
error_log($exception->getMessage());
219219

220220
try {
221-
app("logger")->error($exception->getMessage(), $exception->getTrace());
221+
logger()->error($exception->getMessage(), $exception->getTrace());
222222
} catch (Throwable $loggerException) {
223223
// Logger not available, already logged to error_log
224224
}

src/Queue/Adapters/RedisAdapter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ private function logError(Throwable $exception): void
321321
error_log($exception->getMessage());
322322

323323
try {
324-
app("logger")->error($exception->getMessage(), $exception->getTrace());
324+
logger()->error($exception->getMessage(), $exception->getTrace());
325325
} catch (Throwable $loggerException) {
326326
// Logger not available, already logged to error_log
327327
}

src/Queue/Adapters/SQSAdapter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ private function logError(Throwable $exception): void
257257
error_log($exception->getMessage());
258258

259259
try {
260-
app("logger")->error($exception->getMessage(), $exception->getTrace());
260+
logger()->error($exception->getMessage(), $exception->getTrace());
261261
} catch (Throwable $loggerException) {
262262
// Logger not available, already logged to error_log
263263
}

src/Support/Env.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,17 @@ class Env
4545
*
4646
* @throws
4747
*/
48-
public function __construct(string $filename)
48+
public function __construct(?string $filename = null)
4949
{
5050
if ($this->isLoaded()) {
5151
return;
5252
}
5353

54-
$this->envs = json_decode(file_get_contents($filename), true, 512, JSON_THROW_ON_ERROR);
54+
if ($filename === null || !file_exists($filename)) {
55+
$this->envs = [];
56+
} else {
57+
$this->envs = json_decode(file_get_contents($filename), true, 512, JSON_THROW_ON_ERROR);
58+
}
5559

5660
$this->envs = $this->bindVariables($this->envs);
5761

tests/Queue/QueueTest.php

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,8 @@ public function test_can_switch_between_connections(): void
186186
$beanstalkdAdapter = $this->getAdapter("beanstalkd");
187187
$this->assertInstanceOf(BeanstalkdAdapter::class, $beanstalkdAdapter);
188188

189-
try {
190-
$redisAdapter = $this->getAdapter("redis");
191-
$this->assertInstanceOf(RedisAdapter::class, $redisAdapter);
192-
} catch (\Exception $e) {
193-
// Redis not available, skip this assertion
194-
}
189+
$redisAdapter = $this->getAdapter("redis");
190+
$this->assertInstanceOf(RedisAdapter::class, $redisAdapter);
195191
}
196192

197193
public function test_connection_returns_same_instance_for_same_adapter(): void
@@ -217,11 +213,6 @@ public function test_can_get_current_connection_name(): void
217213
*/
218214
public function test_push_service_adapter(string $connection): void
219215
{
220-
// Skip database adapter due to UUID collision bug
221-
if ($connection === 'database') {
222-
$this->markTestSkipped('Skipped: Str::uuid() generates duplicate UUIDs causing PRIMARY KEY violations');
223-
}
224-
225216
$adapter = $this->getAdapter($connection);
226217
$filename = $this->getProducerFilePath($connection);
227218

@@ -258,11 +249,6 @@ public function test_push_service_adapter(string $connection): void
258249
*/
259250
public function test_push_service_adapter_with_model(string $connection): void
260251
{
261-
// Skip database adapter due to UUID collision bug
262-
if ($connection === 'database') {
263-
$this->markTestSkipped('Skipped: Str::uuid() generates duplicate UUIDs causing PRIMARY KEY violations');
264-
}
265-
266252
// Recreate table to reset auto-increment and avoid test pollution
267253
$this->recreatePetsTable();
268254

@@ -767,6 +753,7 @@ public function test_sync_adapter_executes_without_delay(): void
767753

768754
$startTime = microtime(true);
769755
$producer = $this->createBasicJob("sync");
756+
$producer->setDelay(0);
770757
$adapter->push($producer);
771758
$endTime = microtime(true);
772759

0 commit comments

Comments
 (0)