. */ namespace SP\Domain\Plugin\Ports; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Domain\Plugin\Models\PluginData as PluginDataModel; use SP\Infrastructure\Database\QueryResult; /** * Class PluginDataRepository * * @template T of PluginDataModel */ interface PluginDataRepository { /** * Creates an item * * @param PluginDataModel $pluginData * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function create(PluginDataModel $pluginData): QueryResult; /** * Updates an item * * @param PluginDataModel $pluginData * * @return int * @throws ConstraintException * @throws QueryException */ public function update(PluginDataModel $pluginData): int; /** * Deletes an item * * @param string $name * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function delete(string $name): QueryResult; /** * Deletes an item * * @param string $name * @param int $itemId * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function deleteByItemId(string $name, int $itemId): QueryResult; /** * Returns the item for given name * * @param string $name * @return QueryResult */ public function getByName(string $name): QueryResult; /** * Returns all the items * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getAll(): QueryResult; /** * Returns all the items for given names * * @param string[] $names * * @return QueryResult */ public function getByNameBatch(array $names): QueryResult; /** * Deletes all the items for given names * * @param string[] $names * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function deleteByNameBatch(array $names): QueryResult; /** * Devuelve los datos de un plugin por su nombre * * @param string $name * @param int $itemId * * @return QueryResult * @throws ConstraintException * @throws QueryException */ public function getByItemId(string $name, int $itemId): QueryResult; }