Skip to content

Commit

Permalink
feat(admin): added listing users for admins
Browse files Browse the repository at this point in the history
  • Loading branch information
zZHorizonZz committed Aug 11, 2024
1 parent a4dac65 commit dbcc53c
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package dev.cloudeko.zenei.application.web.resource;

import dev.cloudeko.zenei.application.web.model.response.PrivateUserResponse;
import dev.cloudeko.zenei.domain.feature.ListUsers;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
Expand All @@ -10,16 +12,22 @@
import org.eclipse.microprofile.openapi.annotations.tags.Tag;

import javax.annotation.security.RolesAllowed;
import java.util.stream.Collectors;

@AllArgsConstructor
@RolesAllowed("admin")
@Path("/admin/users")
@Tag(name = "Admin Users Service", description = "API for managing users")
public class AdminUsersResource {

private final ListUsers listUsers;

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getUsers(@QueryParam("page") Integer page, @QueryParam("size") Integer size) {
return Response.ok().build();
final var users = listUsers.listUsers(page, size);
final var usersResponse = users.stream().map(PrivateUserResponse::new).toList();

return Response.ok(usersResponse).build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package dev.cloudeko.zenei.domain.feature;

import dev.cloudeko.zenei.domain.model.user.User;

import java.util.List;

public interface ListUsers {
List<User> listUsers(int offset, int limit);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package dev.cloudeko.zenei.domain.feature.impl;

import dev.cloudeko.zenei.domain.feature.ListUsers;
import dev.cloudeko.zenei.domain.model.user.User;
import dev.cloudeko.zenei.domain.model.user.UserRepository;
import jakarta.enterprise.context.ApplicationScoped;
import lombok.AllArgsConstructor;

import java.util.List;

@ApplicationScoped
@AllArgsConstructor
public class ListUsersImpl implements ListUsers {

private final UserRepository userRepository;

@Override
public List<User> listUsers(int offset, int limit) {
return userRepository.listUsers(offset, limit);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.cloudeko.zenei.domain.model.user;

import java.util.List;
import java.util.Optional;

public interface UserRepository {
Expand All @@ -15,4 +16,6 @@ public interface UserRepository {
Optional<User> getUserByEmail(String email);

Optional<User> getUserByUsername(String username);

List<User> listUsers(int offset, int limit);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import jakarta.enterprise.context.ApplicationScoped;
import lombok.AllArgsConstructor;

import java.util.List;
import java.util.Optional;

@ApplicationScoped
Expand Down Expand Up @@ -60,4 +61,11 @@ public Optional<User> getUserByUsername(String username) {

return Optional.of(userMapper.toDomain(userEntity));
}

@Override
public List<User> listUsers(int offset, int limit) {
return findAll().page(offset, limit).list().stream()
.map(userMapper::toDomain)
.toList();
}
}

0 comments on commit dbcc53c

Please sign in to comment.