Rest API Usando SpringBoot para gerar números para loteria

0 respostas
spring-boot
M

Estou criando uma REST API para gerar número aleatórias para loteria. Estes são os endpointes de requisito.

No primeiro passo, precisamos construir um endpoint que receberá o e-mail da pessoa e retornará um objeto de resposta com os números sorteados para a aposta.

Também devemos construir um segundo endpoint para listar todas as apostas de um solicitante, passando seu e-mail como parâmetro.

Problemática:

Meu projeto conta com três classes principais, a Classe Aposta, que é abstrata e contem o método abstrato gerarAposta( ), a classe ApostaSimplesMegasena que estende a classe Aposta e implementa o método gerarAposta( ) e por fim a classe Apostador, que contem os atributos ID, email e uma List das apostas associadas a ele.

Preciso verificar se o e-mail informado já existe no banco de dados, se já existir, eu também preciso verificar se já existe uma combinação de números(aposta) associada a aquele e-mail antes de salvar a nova aposta no banco. Se não exister registro do e-mail informado no banco, apenas devo salvar a nova aposta.

Seguem os códigos das classes:

package com.apostas.api.apostas.api.model;

import lombok.Data;

import javax.persistence.*;
import java.time.LocalDateTime;

@Data
@Entity
@Table(name = “apostas”)

public abstract class Aposta {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "aposta", nullable = false)
private Integer numerosaposta = gerarNumeros();

@Column(name = "criadaEm", nullable = false)
private LocalDateTime criadaEm = LocalDateTime.now();

public abstract Integer gerarNumeros();

}

@EqualsAndHashCode(callSuper = true)

@Data

@NoArgsConstructor

@AllArgsConstructor

public class ApostaSimplesMegasena extends Aposta{

<a class="mention" href="/u/override">@Override</a>

public Integer gerarNumeros() {

Random gerador = new Random();

return gerador.nextInt(1-60);

}

}

@Data
@Accessors (chain = true)

@Entity

@Table(name = apostadores)

public class Apostador {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name ="email", nullable = false, unique = true)
private String email;

@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE})
private List<ApostaSimplesMegasena> apostaSimplesMegasena;

}

Minha dificuldade está em fazer essas verificações antes de salvar a aposta no banco. Sei que é uma dúvida besta, mas é a primeira API que estou desenvolvendo. Se alguém puder me ajudar com um exemplo, ficarei muito grato.

Criado 30 de janeiro de 2021
Respostas 0
Participantes 1