Skip to content

Commit 7243358

Browse files
committed
feat: replace UserPersistence and RolePersistence with UserRepository and RoleRepository for improved abstraction
1 parent ded6dd9 commit 7243358

File tree

8 files changed

+71
-12
lines changed

8 files changed

+71
-12
lines changed

contexts/Authorization/Application/Coordinators/CurrentUserServiceCoordinator.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,25 @@
77
use App\Http\Coordinators\BaseCoordinator;
88
use Contexts\Authorization\Contracts\V1\DTOs\CurrentUserDTO;
99
use Contexts\Authorization\Contracts\V1\Services\CurrentUserService;
10+
use Contexts\Authorization\Domain\Repositories\RoleRepository;
11+
use Contexts\Authorization\Domain\Repositories\UserRepository;
1012
use Contexts\Authorization\Domain\UserIdentity\Models\UserId;
11-
use Contexts\Authorization\Infrastructure\Persistence\RolePersistence;
12-
use Contexts\Authorization\Infrastructure\Persistence\UserPersistence;
1313

1414
class CurrentUserServiceCoordinator extends BaseCoordinator implements CurrentUserService
1515
{
1616
public function __construct(
17-
private UserPersistence $userPersistence,
18-
private RolePersistence $rolePersistence,
17+
private UserRepository $userRepository,
18+
private RoleRepository $roleRepository,
1919
) {}
2020

2121
public function getCurrentUser(): CurrentUserDTO
2222
{
23-
$user = $this->userPersistence->getById(
23+
$user = $this->userRepository->getById(
2424
UserId::fromInt(auth()->id())
2525
);
2626

2727
$userRoles = $user->getRoleIdCollection();
28-
$roles = $this->rolePersistence->getByIds($userRoles->getIdsArray());
28+
$roles = $this->roleRepository->getByIds($userRoles->getIdsArray());
2929

3030
return new CurrentUserDTO(
3131
$user->getId()->getValue(),

contexts/Authorization/Application/Coordinators/RoleCoordinator.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
use Contexts\Authorization\Application\DTOs\Role\CreateRoleDTO;
1010
use Contexts\Authorization\Application\DTOs\Role\GetRoleListDTO;
1111
use Contexts\Authorization\Application\DTOs\Role\UpdateRoleDTO;
12+
use Contexts\Authorization\Domain\Repositories\RoleRepository;
1213
use Contexts\Authorization\Domain\Role\Models\Role;
1314
use Contexts\Authorization\Domain\Role\Models\RoleId;
1415
use Contexts\Authorization\Domain\Role\Models\RoleStatus;
15-
use Contexts\Authorization\Infrastructure\Persistence\RolePersistence;
1616
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
1717

1818
class RoleCoordinator extends BaseCoordinator
1919
{
2020
public function __construct(
21-
private RolePersistence $repository
21+
private RoleRepository $repository
2222
) {}
2323

2424
public function create(CreateRoleDTO $data): Role

contexts/Authorization/Application/Coordinators/UserIdentityCoordinator.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@
99
use Contexts\Authorization\Application\DTOs\User\CreateUserDTO;
1010
use Contexts\Authorization\Application\DTOs\User\GetUserListDTO;
1111
use Contexts\Authorization\Application\DTOs\User\UpdateUserDTO;
12+
use Contexts\Authorization\Domain\Repositories\UserRepository;
1213
use Contexts\Authorization\Domain\Role\Models\RoleId;
1314
use Contexts\Authorization\Domain\UserIdentity\Models\Email;
1415
use Contexts\Authorization\Domain\UserIdentity\Models\Password;
1516
use Contexts\Authorization\Domain\UserIdentity\Models\RoleIdCollection;
1617
use Contexts\Authorization\Domain\UserIdentity\Models\UserId;
1718
use Contexts\Authorization\Domain\UserIdentity\Models\UserIdentity;
1819
use Contexts\Authorization\Domain\UserIdentity\Models\UserStatus;
19-
use Contexts\Authorization\Infrastructure\Persistence\UserPersistence;
2020
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
2121

2222
class UserIdentityCoordinator extends BaseCoordinator
2323
{
2424
public function __construct(
25-
private UserPersistence $repository
25+
private UserRepository $repository
2626
) {}
2727

2828
public function create(CreateUserDTO $data): UserIdentity
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Contexts\Authorization\Domain\Repositories;
6+
7+
use Contexts\Authorization\Domain\Role\Models\Role;
8+
use Contexts\Authorization\Domain\Role\Models\RoleId;
9+
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
10+
use Illuminate\Support\Collection;
11+
12+
interface RoleRepository
13+
{
14+
public function create(Role $role): Role;
15+
16+
public function getById(RoleId $roleId): Role;
17+
18+
public function getByIds(array $roleIds): Collection;
19+
20+
public function update(Role $role): Role;
21+
22+
public function paginate(int $page = 1, int $perPage = 10, array $criteria = []): LengthAwarePaginator;
23+
24+
public function delete(Role $role): void;
25+
26+
public function getByLabels(array $labels): Collection;
27+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Contexts\Authorization\Domain\Repositories;
6+
7+
use Contexts\Authorization\Domain\UserIdentity\Models\UserId;
8+
use Contexts\Authorization\Domain\UserIdentity\Models\UserIdentity;
9+
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
10+
11+
interface UserRepository
12+
{
13+
public function create(UserIdentity $user): UserIdentity;
14+
15+
public function getById(UserId $userId): UserIdentity;
16+
17+
public function update(UserIdentity $user): UserIdentity;
18+
19+
public function paginate(int $page = 1, int $perPage = 10, array $criteria = []): LengthAwarePaginator;
20+
21+
public function delete(UserIdentity $user): void;
22+
23+
public function changePassword(UserIdentity $user): void;
24+
}

contexts/Authorization/Infrastructure/Persistence/RolePersistence.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Contexts\Authorization\Infrastructure\Persistence;
66

7+
use Contexts\Authorization\Domain\Repositories\RoleRepository;
78
use Contexts\Authorization\Domain\Role\Exceptions\RoleNotFoundException;
89
use Contexts\Authorization\Domain\Role\Models\Role;
910
use Contexts\Authorization\Domain\Role\Models\RoleId;
@@ -13,7 +14,7 @@
1314
use Illuminate\Database\Eloquent\ModelNotFoundException;
1415
use Illuminate\Support\Collection;
1516

16-
class RolePersistence
17+
class RolePersistence implements RoleRepository
1718
{
1819
public function create(Role $role): Role
1920
{

contexts/Authorization/Infrastructure/Persistence/UserPersistence.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Contexts\Authorization\Infrastructure\Persistence;
66

7+
use Contexts\Authorization\Domain\Repositories\UserRepository;
78
use Contexts\Authorization\Domain\UserIdentity\Exceptions\UserNotFoundException;
89
use Contexts\Authorization\Domain\UserIdentity\Models\RoleIdCollection;
910
use Contexts\Authorization\Domain\UserIdentity\Models\UserId;
@@ -13,7 +14,7 @@
1314
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
1415
use Illuminate\Database\Eloquent\ModelNotFoundException;
1516

16-
class UserPersistence
17+
class UserPersistence implements UserRepository
1718
{
1819
public function create(UserIdentity $user): UserIdentity
1920
{

contexts/Authorization/Infrastructure/ServiceProvider.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
use Contexts\Authorization\Application\Coordinators\GlobalPermissionServiceCoordinator;
99
use Contexts\Authorization\Contracts\V1\Services\CurrentUserService;
1010
use Contexts\Authorization\Contracts\V1\Services\GlobalPermissionService;
11+
use Contexts\Authorization\Domain\Repositories\RoleRepository;
12+
use Contexts\Authorization\Domain\Repositories\UserRepository;
13+
use Contexts\Authorization\Infrastructure\Persistence\RolePersistence;
14+
use Contexts\Authorization\Infrastructure\Persistence\UserPersistence;
1115
use Illuminate\Foundation\Support\Providers\RouteServiceProvider;
1216
use Illuminate\Support\Facades\Event;
1317
use Illuminate\Support\Facades\Route;
@@ -40,6 +44,8 @@ public function map(): void
4044
}
4145
});
4246

47+
$this->app->bind(RoleRepository::class, RolePersistence::class);
48+
$this->app->bind(UserRepository::class, UserPersistence::class);
4349
$this->app->bind(CurrentUserService::class, CurrentUserServiceCoordinator::class);
4450
$this->app->bind(GlobalPermissionService::class, GlobalPermissionServiceCoordinator::class);
4551
}

0 commit comments

Comments
 (0)