. */ namespace SP\Domain\CustomField\Ports; use Exception; use SP\Domain\Common\Ports\Repository; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Domain\CustomField\Models\CustomFieldData as CustomFieldDataModel; use SP\Infrastructure\Database\QueryResult; /** * Interface CustomFieldRepository * * @template T of CustomFieldDataModel */ interface CustomFieldDataRepository extends Repository { /** * Updates an item * * @param CustomFieldDataModel $customFieldData * * @return int * @throws QueryException * @throws ConstraintException */ public function update(CustomFieldDataModel $customFieldData): int; /** * Check whether the item has custom fields with data * * @param int $itemId * @param int $moduleId * @param int $definitionId * @return bool * @throws QueryException * @throws ConstraintException */ public function checkExists(int $itemId, int $moduleId, int $definitionId): bool; /** * Creates an item * * @param CustomFieldDataModel $customFieldData * * @return QueryResult * @throws QueryException * @throws ConstraintException */ public function create(CustomFieldDataModel $customFieldData): QueryResult; /** * Delete the module's custom field data * * @param int[] $itemIds * @param int $moduleId * * @return QueryResult * @throws QueryException * @throws ConstraintException */ public function deleteBatch(array $itemIds, int $moduleId): QueryResult; /** * Returns all the items that were encrypted * * @return QueryResult */ public function getAllEncrypted(): QueryResult; /** * Returns the module's item for given id * * @param int $moduleId * @param int|null $itemId * * @return QueryResult * @throws Exception */ public function getForModuleAndItemId(int $moduleId, ?int $itemId): QueryResult; /** * Returns all the items * * @return QueryResult */ public function getAll(): QueryResult; }