package com.bernard.nodecames.model; import java.util.UUID; import jakarta.persistence.Embeddable; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; import jakarta.persistence.ManyToOne; import jakarta.persistence.MapsId; import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @Entity @NoArgsConstructor public class World { @EmbeddedId WorldId id; @MapsId("gameId") @ManyToOne Game game; // Config used when resetting this world GridConfig initialConfig; @ManyToOne(optional = true) Grid currentGrid; boolean won; boolean locked; public World(Game g, String name, GridConfig initConfig, Grid currentGrid, boolean won, boolean locked) { this.id = new WorldId(g.getId(), name); this.game = g; this.initialConfig = initConfig; this.currentGrid = currentGrid; this.won = won; this.locked = locked; } public String getName() { return this.getId().getName(); } @Data @NoArgsConstructor @AllArgsConstructor @Embeddable public static class WorldId { UUID gameId; String name; } }