. */ namespace SP\Infrastructure\Account\Repositories; use Aura\SqlQuery\Common\SelectInterface; use SP\Domain\Account\Search\AccountSearchFilter; use SP\Infrastructure\Database\QueryResult; /** * Class AccountSearchRepository */ interface AccountSearchRepositoryInterface { /** * Obtener las cuentas de una búsqueda. * * @param AccountSearchFilter $accountSearchFilter * * @return QueryResult */ public function getByFilter(AccountSearchFilter $accountSearchFilter): QueryResult; /** * @param int $userId * @param int $userGroupId * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForUser(int $userId, int $userGroupId): SelectInterface; /** * @param int $userGroupId * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForGroup(int $userGroupId): SelectInterface; /** * @param string $userGroupName * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForMainGroup(string $userGroupName): SelectInterface; /** * @param string $owner * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForOwner(string $owner): SelectInterface; /** * @param string $fileName * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForFile(string $fileName): SelectInterface; /** * @param int $accountId * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForAccountId(int $accountId): SelectInterface; /** * @param string $clientName * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForClient(string $clientName): SelectInterface; /** * @param string $categoryName * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForCategory(string $categoryName): SelectInterface; /** * @param string $accountName * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForAccountNameRegex(string $accountName): SelectInterface; public function withFilterForIsExpired(): SelectInterface; public function withFilterForIsNotExpired(): SelectInterface; /** * @param int $userId * @param int $userGroupId * * @return \Aura\SqlQuery\Common\SelectInterface */ public function withFilterForIsPrivate(int $userId, int $userGroupId): SelectInterface; public function withFilterForIsNotPrivate(): SelectInterface; }