feat: add repository interfaces (ports) for Article, ArticleType, Platform, Customer, Order

This commit is contained in:
Simon Kuehn 2026-05-14 04:30:42 +00:00
parent e8fb01f707
commit 047c3e2588
5 changed files with 103 additions and 0 deletions

View file

@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
namespace App\Domain\Article\Repository;
use App\Domain\Article\Article;
use App\Domain\Article\ArticleStatus;
use Symfony\Component\Uid\Uuid;
interface ArticleRepositoryInterface
{
public function findById(Uuid $id): ?Article;
public function findBySku(string $sku): ?Article;
public function findByInventoryNumber(string $inventoryNumber): ?Article;
/** @return list<Article> */
public function findByStatus(ArticleStatus $status): array;
public function decrementStockAtomic(Uuid $articleId): bool;
public function save(Article $article): void;
public function remove(Article $article): void;
}

View file

@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Domain\Article\Repository;
use App\Domain\Article\ArticleType;
use Symfony\Component\Uid\Uuid;
interface ArticleTypeRepositoryInterface
{
public function findById(Uuid $id): ?ArticleType;
public function findByName(string $name): ?ArticleType;
/** @return list<ArticleType> */
public function findAll(): array;
public function save(ArticleType $articleType): void;
}

View file

@ -0,0 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Domain\Channel\Repository;
use App\Domain\Channel\Platform;
use Symfony\Component\Uid\Uuid;
interface PlatformRepositoryInterface
{
public function findById(Uuid $id): ?Platform;
public function findByType(string $type): ?Platform;
/** @return list<Platform> */
public function findAll(): array;
public function save(Platform $platform): void;
}

View file

@ -0,0 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Domain\Order\Repository;
use App\Domain\Order\Customer;
use Symfony\Component\Uid\Uuid;
interface CustomerRepositoryInterface
{
public function findById(Uuid $id): ?Customer;
public function findByPlatformId(string $platform, string $platformUserId): ?Customer;
public function findByMatchingKey(string $matchingKey): ?Customer;
public function save(Customer $customer): void;
}

View file

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Domain\Order\Repository;
use App\Domain\Order\Order;
use Symfony\Component\Uid\Uuid;
interface OrderRepositoryInterface
{
public function findById(Uuid $id): ?Order;
public function findByPlatformOrderId(string $platformOrderId): ?Order;
public function save(Order $order): void;
}