feat: debut du domain Shared avec Contracts et Jobs + rules pour cursor

This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2025-03-24 14:56:18 +01:00
parent 19a697c712
commit ca9a74fe69
15 changed files with 748 additions and 110 deletions

View File

@@ -0,0 +1,15 @@
<?php
declare(strict_types=1);
namespace App\Domain\Shared\Domain\Contract;
interface CommandHandlerInterface
{
/**
* @template T of CommandInterface
* @param T $command
* @return void
*/
public function handle(CommandInterface $command): void;
}

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace App\Domain\Shared\Domain\Contract;
interface CommandInterface
{
}

View File

@@ -0,0 +1,16 @@
<?php
namespace App\Domain\Shared\Domain\Contract;
use App\Domain\Shared\Domain\Model\FailedJob;
interface FailedJobRepositoryInterface
{
public function save(FailedJob $failedJob): void;
public function get(string $id): ?FailedJob;
public function delete(string $id): void;
public function findAll(): array;
public function findByJobType(string $jobType): array;
public function findByJobId(string $jobId): array;
public function findRetryableJobs(): array;
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Domain\Shared\Domain\Contract;
use App\Domain\Shared\Domain\Model\Job;
use App\Domain\Shared\Domain\Model\JobStatus;
interface JobRepositoryInterface
{
public function save(Job $job): void;
public function get(string $id): ?Job;
public function findByStatus(JobStatus $status): array;
public function findByType(string $type): array;
public function findPendingJobs(): array;
public function findInProgressJobs(): array;
public function findFailedJobs(): array;
}

View File

@@ -0,0 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Domain\Shared\Domain\Contract;
interface QueryHandlerInterface
{
/**
* @template T of QueryInterface
* @template R of ResponseInterface
* @param T $query
* @return R
*/
public function handle(QueryInterface $query): ResponseInterface;
}

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace App\Domain\Shared\Domain\Contract;
interface QueryInterface
{
}

View File

@@ -0,0 +1,9 @@
<?php
declare(strict_types=1);
namespace App\Domain\Shared\Domain\Contract;
interface ResponseInterface
{
}