feat(ReadUser): implementada funcionalidad de leer usuarios

parent f816f94e
package com.example.apprecetas.user.application;
import com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto;
import java.util.List;
public interface ReadUserUseCase {
UserOutputDto readById(Long id);
List<UserOutputDto> readAll();
}
package com.example.apprecetas.user.application.impl;
import com.example.apprecetas.exceptions.EntityNotFoundException;
import com.example.apprecetas.user.application.ReadUserUseCase;
import com.example.apprecetas.user.domain.repository.ReadUserRepository;
import com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto;
import com.example.apprecetas.user.infrastructure.mapper.UserMapper;
import com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa;
import lombok.RequiredArgsConstructor;
import org.mapstruct.factory.Mappers;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class ReadUserUseCaseImpl implements ReadUserUseCase {
private final ReadUserRepository repository;
private final UserMapper mapper = Mappers.getMapper(UserMapper.class);
@Override
public UserOutputDto readById(Long id) {
UserJpa userJpa = repository.readById(id)
.orElseThrow(() -> new EntityNotFoundException("Usuario con id " + id + " no encontrado"));
return mapper.map(mapper.mapJpa(userJpa));
}
@Override
public List<UserOutputDto> readAll() {
return repository.readAll().stream()
.map(mapper::mapJpa)
.map(mapper::map)
.toList();
}
}
package com.example.apprecetas.user.domain.repository;
import com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa;
import java.util.List;
import java.util.Optional;
public interface ReadUserRepository {
Optional<UserJpa> readById(Long id);
List<UserJpa> readAll();
}
package com.example.apprecetas.user.infrastructure.controller;
import com.example.apprecetas.user.application.ReadUserUseCase;
import com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
public class ReadUserController {
private final ReadUserUseCase service;
@GetMapping("/{id}")
public ResponseEntity<UserOutputDto> readById(@PathVariable Long id) {
return ResponseEntity.ok().body(service.readById(id));
}
@GetMapping
public ResponseEntity<List<UserOutputDto>> readAll() {
if(service.readAll().isEmpty())
return ResponseEntity.noContent().build();
return ResponseEntity.ok().body(service.readAll());
}
}
package com.example.apprecetas.user.infrastructure.repository.impl;
import com.example.apprecetas.user.domain.repository.ReadUserRepository;
import com.example.apprecetas.user.infrastructure.repository.jpa.UserJpa;
import com.example.apprecetas.user.infrastructure.repository.jpa.UserRepositoryJpa;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
@Repository
@RequiredArgsConstructor
public class ReadUserRepositoryImpl implements ReadUserRepository {
private final UserRepositoryJpa repositoryJpa;
@Override
public Optional<UserJpa> readById(Long id) {
return repositoryJpa.findById(id);
}
@Override
public List<UserJpa> readAll() {
return repositoryJpa.findAll();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment