diff options
Diffstat (limited to 'src/main/java/com/odiparpack/back/odiparback/usuario')
4 files changed, 156 insertions, 0 deletions
diff --git a/src/main/java/com/odiparpack/back/odiparback/usuario/Usuario.java b/src/main/java/com/odiparpack/back/odiparback/usuario/Usuario.java new file mode 100644 index 0000000..416ada1 --- /dev/null +++ b/src/main/java/com/odiparpack/back/odiparback/usuario/Usuario.java @@ -0,0 +1,39 @@ +package com.odiparpack.back.odiparback.usuario; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.*; + +@Entity +@Table + +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +public class Usuario { + @Id + @SequenceGenerator( + name = "usuario_sequence", + sequenceName = "usuario_sequence", + allocationSize = 1 + ) + @GeneratedValue( + strategy = GenerationType.SEQUENCE, + generator = "usuario_sequence" + ) + private Long id; + private String usuario; + private String clave; + private String nombre; + private String apellido; + private String dni; + private String correo; + + @ManyToOne + private Usuario creador; + +} diff --git a/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioController.java b/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioController.java new file mode 100644 index 0000000..9ada36e --- /dev/null +++ b/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioController.java @@ -0,0 +1,49 @@ +package com.odiparpack.back.odiparback.usuario; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; + +@RestController +@RequestMapping(path = "api/v1/usuario") +public class UsuarioController { + + private final UsuarioService usuarioService; + + @Autowired + public UsuarioController(UsuarioService usuarioService) { + this.usuarioService = usuarioService; + } + + @GetMapping + public List<Usuario> getAll() { + return usuarioService.getAll(); + } + + @GetMapping(path = "{id}") + public Optional<Usuario> get(@PathVariable Long id) { + return usuarioService.get(id); + } + + @PostMapping + public Long register(@RequestBody Usuario usuario) { + return usuarioService.register(usuario); + } + + @PostMapping(path = "0") + public void registerAll(@RequestBody List<Usuario> usuarios) { + usuarioService.registerAll(usuarios); + } + + @DeleteMapping(path = "{id}") + public void delete(@PathVariable("id") Long id) { + usuarioService.delete(id); + } + + @PutMapping + public void update(@RequestBody Usuario usuario) { + usuarioService.update(usuario); + } +} diff --git a/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioRepository.java b/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioRepository.java new file mode 100644 index 0000000..668a3d8 --- /dev/null +++ b/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioRepository.java @@ -0,0 +1,8 @@ +package com.odiparpack.back.odiparback.usuario; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UsuarioRepository extends JpaRepository<Usuario, Long> { +} diff --git a/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioService.java b/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioService.java new file mode 100644 index 0000000..a42c2a5 --- /dev/null +++ b/src/main/java/com/odiparpack/back/odiparback/usuario/UsuarioService.java @@ -0,0 +1,60 @@ +package com.odiparpack.back.odiparback.usuario; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; +import java.util.Optional; + +@Service +public class UsuarioService { + + private final UsuarioRepository usuarioRepository; + + @Autowired + public UsuarioService(UsuarioRepository usuarioRepository) { + this.usuarioRepository = usuarioRepository; + } + + public List<Usuario> getAll() { + return usuarioRepository.findAll(); + } + + public Optional<Usuario> get(Long id) { + return usuarioRepository.findById(id); + } + + public Long register(Usuario usuario) { + usuario.setId(null); // overwrite protection + usuario = usuarioRepository.save(usuario); + return usuario.getId(); + } + + public void registerAll(List<Usuario> usuarios) { + usuarioRepository.saveAll(usuarios); + } + + public void delete(Long id) { + boolean exists = usuarioRepository.existsById(id); + if (!exists) { + throw new IllegalStateException( + "usuario with id " + id + " does not exists"); + } + usuarioRepository.deleteById(id); + } + + // "Managed mode". Changes saved automatically + @Transactional + public void update(Usuario usuarioNew) { + Long id = usuarioNew.getId(); + if (usuarioNew.getId() == null || + !usuarioRepository.existsById(id)) { + throw new IllegalStateException( + "usuario id (" + id + ") doesn't exist" + ); + } + usuarioRepository.save(usuarioNew); + } + +} |
