first commit
This commit is contained in:
65
src/Media/MediaRepositoryInterface.php
Normal file
65
src/Media/MediaRepositoryInterface.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Media;
|
||||
|
||||
/**
|
||||
* Contrat de persistance des médias uploadés.
|
||||
*
|
||||
* Découple les contrôleurs de l'implémentation concrète PDO/SQLite,
|
||||
* facilitant les mocks dans les tests unitaires.
|
||||
*/
|
||||
interface MediaRepositoryInterface
|
||||
{
|
||||
/**
|
||||
* Retourne tous les médias triés du plus récent au plus ancien.
|
||||
*
|
||||
* @return Media[]
|
||||
*/
|
||||
public function findAll(): array;
|
||||
|
||||
/**
|
||||
* Retourne tous les médias d'un utilisateur donné.
|
||||
*
|
||||
* @param int $userId Identifiant de l'utilisateur
|
||||
*
|
||||
* @return Media[]
|
||||
*/
|
||||
public function findByUserId(int $userId): array;
|
||||
|
||||
/**
|
||||
* Trouve un média par son identifiant.
|
||||
*
|
||||
* @param int $id Identifiant du média
|
||||
*
|
||||
* @return Media|null Le média trouvé, ou null s'il n'existe pas
|
||||
*/
|
||||
public function findById(int $id): ?Media;
|
||||
|
||||
/**
|
||||
* Trouve un média par le hash SHA-256 de son contenu (déduplication).
|
||||
*
|
||||
* @param string $hash Hash SHA-256 du contenu binaire du fichier
|
||||
*
|
||||
* @return Media|null Le média existant, ou null si aucun doublon
|
||||
*/
|
||||
public function findByHash(string $hash): ?Media;
|
||||
|
||||
/**
|
||||
* Persiste un nouveau média en base de données.
|
||||
*
|
||||
* @param Media $media Le média à créer
|
||||
*
|
||||
* @return int L'identifiant généré par la base de données
|
||||
*/
|
||||
public function create(Media $media): int;
|
||||
|
||||
/**
|
||||
* Supprime un média de la base de données.
|
||||
*
|
||||
* @param int $id Identifiant du média à supprimer
|
||||
*
|
||||
* @return int Nombre de lignes supprimées
|
||||
*/
|
||||
public function delete(int $id): int;
|
||||
}
|
||||
Reference in New Issue
Block a user