refactor(repository): deduplicate unwrap and id array helpers

This commit is contained in:
2026-03-13 13:12:51 +01:00
parent efa031ea5f
commit d28f85ac9e
13 changed files with 465 additions and 240 deletions

View File

@@ -4,23 +4,15 @@ namespace MintyPHP\Repository\Access;
use MintyPHP\DB;
use MintyPHP\Repository\Support\RepoQuery;
use MintyPHP\Repository\Support\RepositoryArrayHelper;
class PermissionRepository implements PermissionRepositoryInterface
{
public function list(): array
{
$rows = DB::select('select id, `key`, description, active, is_system, created from permissions order by `key` asc');
if (!is_array($rows)) {
return [];
}
$list = [];
foreach ($rows as $row) {
$data = $row['permissions'] ?? $row;
if (is_array($data)) {
$list[] = $data;
}
}
return $list;
return RepositoryArrayHelper::unwrapList($rows, 'permissions');
}
public function listActive(): array
@@ -28,17 +20,8 @@ class PermissionRepository implements PermissionRepositoryInterface
$rows = DB::select(
'select id, `key`, description, active, is_system, created from permissions where active = 1 order by `key` asc'
);
if (!is_array($rows)) {
return [];
}
$list = [];
foreach ($rows as $row) {
$data = $row['permissions'] ?? $row;
if (is_array($data)) {
$list[] = $data;
}
}
return $list;
return RepositoryArrayHelper::unwrapList($rows, 'permissions');
}
public function listPaged(array $options): array
@@ -69,14 +52,8 @@ class PermissionRepository implements PermissionRepositoryInterface
' order by ' . $orderBy . ' ' . $dir . ' limit ? offset ?';
$queryParams = array_merge($params, [(string) $limit, (string) $offset]);
$rows = DB::select($query, ...$queryParams);
$list = [];
foreach ($rows as $row) {
$data = $row['permissions'] ?? $row;
if (is_array($data)) {
$list[] = $data;
}
}
return ['rows' => $list, 'total' => (int) $total];
return ['rows' => RepositoryArrayHelper::unwrapList($rows, 'permissions'), 'total' => (int) $total];
}
public function find(int $id): ?array
@@ -85,8 +62,8 @@ class PermissionRepository implements PermissionRepositoryInterface
'select id, `key`, description, active, is_system, created from permissions where id = ? limit 1',
(string) $id
);
$data = $row['permissions'] ?? $row;
return is_array($data) ? $data : null;
return RepositoryArrayHelper::unwrap($row, 'permissions');
}
public function findByKey(string $key): ?array
@@ -95,8 +72,8 @@ class PermissionRepository implements PermissionRepositoryInterface
'select id, `key`, description, active, is_system, created from permissions where `key` = ? limit 1',
$key
);
$data = $row['permissions'] ?? $row;
return is_array($data) ? $data : null;
return RepositoryArrayHelper::unwrap($row, 'permissions');
}
public function create(array $data): ?int