package de.oaa.xxx.games.vanilla.entity;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import de.oaa.xxx.games.common.aufgaben.Werkzeug;
import jakarta.persistence.CollectionTable;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
@Table(name = "vanilla_mitspieler")
public class VanillaMitspielerEntity {
	@Id
	@Column
	private UUID mitspielerId;
	@Column
	private UUID userId;
	@Column
	private boolean eigenesGeraet;
	@Column
	private String name;
	@Enumerated(EnumType.STRING)
	@ElementCollection(targetClass = Werkzeug.class, fetch = FetchType.EAGER)
	@CollectionTable(name = "vanilla_mitspieler_werkzeuge", joinColumns = @JoinColumn(name = "mitspielerId"))
	@Column(name = "werkzeug")
	private List<Werkzeug> werkzeuge = new ArrayList<>();
	@ManyToOne
	@JoinColumn(name = "sessionId", nullable = false)
	private VanillaGameEntity session;

	public de.oaa.xxx.games.vanilla.VanillaMitspieler toMitspieler() {
		de.oaa.xxx.games.vanilla.VanillaMitspieler m = new de.oaa.xxx.games.vanilla.VanillaMitspieler();
		m.setId(mitspielerId);
		m.setUserId(userId);
		m.setEigenesGeraet(eigenesGeraet);
		m.setName(name);
		m.setVerfuegbareWerkzeuge(new ArrayList<>(werkzeuge));
		return m;
	}
}
