package com.dowstats.data.entities import com.dowstats.data.dto.controllers.building.AddonRequirementDto import com.dowstats.data.dto.controllers.building.BuildingAddonDto import com.dowstats.data.dto.controllers.building.BuildingAddonShortDto import com.fasterxml.jackson.annotation.JsonIgnore import jakarta.persistence.* @Entity @Table(name = "building_addons") class BuildingAddon { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null @ManyToOne @JoinColumn(name = "building_id", nullable = false) @JsonIgnore var building: Building? = null var name: String? = null var description: String? = null var filename: String? = null var addonCostRequisition: Double? = null var addonCostPower: Double? = null var addonCostPopulation: Double? = null var addonCostFaith: Double? = null var addonCostSouls: Double? = null var addonCostTime: Int? = null @OneToMany(mappedBy = "addon", cascade = [CascadeType.ALL]) var addonModifiers: MutableSet? = null @OneToMany(mappedBy = "addon", cascade = [CascadeType.ALL]) var addonRequirements: MutableSet? = null var icon: String? = null var modId: Long? = null fun toDto(addonRequirementDto: AddonRequirementDto?): BuildingAddonDto = BuildingAddonDto( id = id, name = name, description = description, filename = filename, addonCostRequisition = addonCostRequisition, addonCostPower = addonCostPower, addonCostPopulation = addonCostPopulation, addonCostFaith = addonCostFaith, addonCostSouls = addonCostSouls, addonCostTime = addonCostTime, addonModifiers = addonModifiers?.map { it.toDto() }?.toSet() ?: emptySet(), addonRequirement = addonRequirementDto, icon = icon ) fun toShortDto(): BuildingAddonShortDto = BuildingAddonShortDto( id = id, buildingId = building?.id, name = name, icon = icon ) }