fix: ji and site now reference each other directly instead of ids

This commit is contained in:
Arthur Wambst 2025-07-30 03:45:15 +02:00
parent 5496bee4e6
commit 7a984cb7d2
6 changed files with 29 additions and 17 deletions

View File

@ -34,7 +34,7 @@ public class Instance {
public User user; public User user;
@ManyToOne @ManyToOne
@JoinColumn(name = "practical_id") @JoinColumn(name = "practical_id", nullable = false)
public Tp tp; public Tp tp;
public Instance(String name, String ssh, String pwd, Long port, User user, Tp tp) { public Instance(String name, String ssh, String pwd, Long port, User user, Tp tp) {

View File

@ -10,6 +10,8 @@ import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.JoinColumn;
@Entity @Entity
@NoArgsConstructor @NoArgsConstructor
@ -24,13 +26,16 @@ public class Ji {
public String description; public String description;
public String respo; public String respo;
public String date; public String date;
public Long siteId;
public Ji(String name, String description, String respo, String date, Long siteId) { @ManyToOne
@JoinColumn(name = "site_id")
public Site site;
public Ji(String name, String description, String respo, String date, Site site) {
this.name = name; this.name = name;
this.description = description; this.description = description;
this.respo = respo; this.respo = respo;
this.date = date; this.date = date;
this.siteId = siteId; this.site = site;
} }
} }

View File

@ -14,6 +14,9 @@ import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Set; import java.util.Set;
import java.util.HashSet; import java.util.HashSet;
import jakarta.persistence.OneToMany;
import java.util.List;
import java.util.ArrayList;
@Entity @Entity
@NoArgsConstructor @NoArgsConstructor
@ -31,13 +34,15 @@ public class Site {
public String name; public String name;
public String description; public String description;
public String address; public String address;
public Set<Long> jiInSite;
@OneToMany(mappedBy = "site")
public List<Ji> jiInSite;
public Site(String name, String description, String address) { public Site(String name, String description, String address) {
this.name = name; this.name = name;
this.description = description; this.description = description;
this.address = address; this.address = address;
this.jiInSite = new HashSet<Long>(); this.jiInSite = new ArrayList<Ji>();
} }

View File

@ -73,7 +73,7 @@ public class JiResource {
}) })
public Response deleteJiByName(@QueryParam("name") String name) { public Response deleteJiByName(@QueryParam("name") String name) {
try { try {
jiService.deleteJiByName(name); jiService.deleteJi(name);
return Response.ok().build(); return Response.ok().build();
} catch (Exception e) { } catch (Exception e) {
return Response.status(500).entity(Map.of("error", e.getMessage())).build(); return Response.status(500).entity(Map.of("error", e.getMessage())).build();

View File

@ -20,9 +20,9 @@ public class JiService {
@Transactional @Transactional
public Ji createJi(String name, String description, String address, String respo, String site_name) { public Ji createJi(String name, String description, String address, String respo, String site_name) {
Site site = siteService.getSiteByName(site_name); Site site = siteService.getSiteByName(site_name);
Ji ji = new Ji(name, description, address, respo, site.id); Ji ji = new Ji(name, description, address, respo, site);
jiRepository.persist(ji); jiRepository.persist(ji);
siteService.addJi(site, ji.id); siteService.addJi(site, ji);
return ji; return ji;
} }
@ -45,15 +45,16 @@ public class JiService {
} }
@Transactional @Transactional
public void deleteJiById(Long id) { public void deleteJi(Long id) {
siteService.removeJi(siteService.getSiteById(getJiById(id).siteId), id); Ji ji = getJiById(id);
siteService.removeJi(ji.site, ji);
jiRepository.deleteById(id); jiRepository.deleteById(id);
} }
@Transactional @Transactional
public void deleteJiByName(String name) { public void deleteJi(String name) {
Ji ji = getJiByName(name); Ji ji = getJiByName(name);
siteService.removeJi(siteService.getSiteById(ji.siteId), ji.id); siteService.removeJi(ji.site, ji);
jiRepository.delete(ji); jiRepository.delete(ji);
} }
} }

View File

@ -1,6 +1,7 @@
package fr.la_banquise.backend.services; package fr.la_banquise.backend.services;
import fr.la_banquise.backend.data.model.Site; import fr.la_banquise.backend.data.model.Site;
import fr.la_banquise.backend.data.model.Ji;
import fr.la_banquise.backend.data.repository.SiteRepository; import fr.la_banquise.backend.data.repository.SiteRepository;
import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject; import jakarta.inject.Inject;
@ -39,13 +40,13 @@ public class SiteService {
} }
@Transactional @Transactional
public void addJi(Site site, Long id){ public void addJi(Site site, Ji ji){
site.jiInSite.add(id); site.jiInSite.add(ji);
} }
@Transactional @Transactional
public void removeJi(Site site, Long id){ public void removeJi(Site site, Ji ji){
site.jiInSite.remove(id); site.jiInSite.remove(ji);
} }
@Transactional @Transactional