Skip to content

Commit 8087a3a

Browse files
committed
Scheduler facade.
1 parent f22859b commit 8087a3a

File tree

8 files changed

+84
-25
lines changed

8 files changed

+84
-25
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"Binarcode\\LaravelMailator\\LaravelMailatorServiceProvider"
5555
],
5656
"aliases": {
57-
"LaravelMailator": "Binarcode\\LaravelMailator\\LaravelMailatorFacade"
57+
"LaravelMailator": "Mailator"
5858
}
5959
}
6060
}

src/LaravelMailatorFacade.php

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/LaravelMailatorServiceProvider.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,11 @@ public function register()
8484

8585
// Register the main class to use with the facade
8686
$this->app->singleton('mailator', function () {
87-
return new LaravelMailator();
87+
return new MailatorManager();
88+
});
89+
90+
$this->app->singleton('mailator-scheduler', function () {
91+
return new SchedulerManager();
8892
});
8993
}
9094
}

src/Mailator.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Binarcode\LaravelMailator;
4+
5+
use Illuminate\Support\Facades\Facade;
6+
7+
/**
8+
* @see \Binarcode\LaravelMailator\MailatorManager
9+
* @mixin \Binarcode\LaravelMailator\MailatorManager
10+
*/
11+
class Mailator extends Facade
12+
{
13+
protected static function getFacadeAccessor()
14+
{
15+
return 'mailator';
16+
}
17+
}

src/LaravelMailator.php renamed to src/MailatorManager.php

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

33
namespace Binarcode\LaravelMailator;
44

5-
class LaravelMailator
5+
class MailatorManager
66
{
77
}

src/Scheduler.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22

33
namespace Binarcode\LaravelMailator;
44

5-
class Scheduler
5+
use Illuminate\Support\Facades\Facade;
6+
7+
/**
8+
* @see \Binarcode\LaravelMailator\SchedulerManager
9+
* @mixin \Binarcode\LaravelMailator\SchedulerManager
10+
*/
11+
class Scheduler extends Facade
612
{
13+
protected static function getFacadeAccessor()
14+
{
15+
return 'mailator-scheduler';
16+
}
717
}

src/SchedulerManager.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Binarcode\LaravelMailator;
4+
5+
use Binarcode\LaravelMailator\Models\MailatorSchedule;
6+
7+
class SchedulerManager
8+
{
9+
private ?MailatorSchedule $instance;
10+
11+
public function init(string $name): MailatorSchedule
12+
{
13+
return $this->instance = MailatorSchedule::init($name);
14+
}
15+
16+
public function __destruct()
17+
{
18+
if (! $this->instance->wasRecentlyCreated) {
19+
$this->instance->save();
20+
}
21+
}
22+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace Binarcode\LaravelMailator\Tests\Feature;
4+
5+
use Binarcode\LaravelMailator\Models\MailatorSchedule;
6+
use Binarcode\LaravelMailator\Scheduler;
7+
use Binarcode\LaravelMailator\Tests\TestCase;
8+
use Illuminate\Foundation\Testing\RefreshDatabase;
9+
10+
class SchedulerFacadeTest extends TestCase
11+
{
12+
use RefreshDatabase;
13+
14+
public function test_scheduler_methods_works(): void
15+
{
16+
self::assertInstanceOf(
17+
MailatorSchedule::class,
18+
Scheduler::init('Test')
19+
);
20+
21+
Scheduler::__destruct();
22+
23+
$this->assertDatabaseHas('mailator_schedulers', [
24+
'name' => 'Test',
25+
]);
26+
}
27+
}

0 commit comments

Comments
 (0)