diff --git a/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Accessory.java b/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Accessory.java new file mode 100644 index 0000000..8c4b6b9 --- /dev/null +++ b/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Accessory.java @@ -0,0 +1,48 @@ +package com.onixbyte.deltaforceguide.domain.entity; + +import java.util.ArrayList; +import java.util.List; + +public class Accessory { + + private String slotName; + + private String accessoryName; + + private List tunings = new ArrayList<>(); + + public Accessory() { + } + + public String getSlotName() { + return slotName; + } + + public void setSlotName(String slotName) { + this.slotName = slotName; + } + + public String getAccessoryName() { + return accessoryName; + } + + public void setAccessoryName(String accessoryName) { + this.accessoryName = accessoryName; + } + + public List getTunings() { + return tunings; + } + + public void setTunings(List tunings) { + this.tunings = tunings; + } + + public void addTuning(Tuning tuning) { + this.tunings.add(tuning); + } + + public void removeTuning(Tuning tuning) { + this.tunings.remove(tuning); + } +} diff --git a/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Modification.java b/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Modification.java index 6ed3ec6..ed145b5 100644 --- a/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Modification.java +++ b/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Modification.java @@ -1,17 +1,7 @@ package com.onixbyte.deltaforceguide.domain.entity; import io.hypersistence.utils.hibernate.type.json.JsonType; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.Index; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; +import jakarta.persistence.*; import org.hibernate.annotations.Type; import java.util.ArrayList; @@ -41,9 +31,13 @@ public class Modification { private String code; @Type(JsonType.class) - @Column(name = "tags", columnDefinition = "json") + @Column(name = "tags", columnDefinition = "jsonb") private List tags = new ArrayList<>(); + @Type(JsonType.class) + @Column(name = "accessories", columnDefinition = "jsonb") + private List accessories = new ArrayList<>(); + @Column(name = "note", columnDefinition = "TEXT") private String note; @@ -93,6 +87,22 @@ public class Modification { this.tags = tags; } + public List getAccessories() { + return accessories; + } + + public void setAccessories(List accessories) { + this.accessories = accessories; + } + + public void addAccessory(Accessory modificationAccessory) { + this.accessories.add(modificationAccessory); + } + + public void removeAccessory(Accessory modificationAccessory) { + this.accessories.remove(modificationAccessory); + } + public String getNote() { return note; } @@ -128,6 +138,7 @@ public class Modification { private String name; private String code; private List tags; + private List accessories; private String note; private String author; private String videoUrl; @@ -157,6 +168,11 @@ public class Modification { return this; } + public Builder accessories(List accessories) { + this.accessories = accessories; + return this; + } + public Builder note(String note) { this.note = note; return this; @@ -179,6 +195,7 @@ public class Modification { modification.name = this.name; modification.code = this.code; modification.tags = this.tags == null ? new ArrayList<>() : this.tags; + modification.accessories = this.accessories == null ? new ArrayList<>() : this.accessories; modification.note = this.note; modification.author = this.author; modification.videoUrl = this.videoUrl; diff --git a/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Tuning.java b/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Tuning.java new file mode 100644 index 0000000..4ab9879 --- /dev/null +++ b/src/main/java/com/onixbyte/deltaforceguide/domain/entity/Tuning.java @@ -0,0 +1,26 @@ +package com.onixbyte.deltaforceguide.domain.entity; + +public class Tuning { + + private String tuningName; + private Double tuningValue; + + public Tuning() { + } + + public String getTuningName() { + return tuningName; + } + + public void setTuningName(String tuningName) { + this.tuningName = tuningName; + } + + public Double getTuningValue() { + return tuningValue; + } + + public void setTuningValue(Double tuningValue) { + this.tuningValue = tuningValue; + } +} diff --git a/src/main/resources/db/migration/V5__modification_accessories.sql b/src/main/resources/db/migration/V5__modification_accessories.sql new file mode 100644 index 0000000..1450826 --- /dev/null +++ b/src/main/resources/db/migration/V5__modification_accessories.sql @@ -0,0 +1,2 @@ +ALTER TABLE modification + ADD accessories JSONB NOT NULL DEFAULT '[]'; \ No newline at end of file