feat: changed few things
This commit is contained in:
parent
ec8a0db1be
commit
cd041b40d3
@ -4,20 +4,24 @@ import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||
|
||||
import io.quarkus.hibernate.orm.panache.PanacheEntity;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.JoinColumn;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* Instances
|
||||
*/
|
||||
@Entity
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Table(name = "instance")
|
||||
public class Instance extends PanacheEntity {
|
||||
public class Instance {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
public Long id;
|
||||
public String name;
|
||||
public String ssh;
|
||||
public String pwd;
|
||||
@ -27,7 +31,15 @@ public class Instance extends PanacheEntity {
|
||||
@JoinColumn(name = "user_id", nullable = false)
|
||||
public User user;
|
||||
|
||||
@ManyToOne
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "practical_id")
|
||||
public Tp tp;
|
||||
|
||||
public Instance(String name, String ssh, String pwd, User user, Tp tp) {
|
||||
this.name = name;
|
||||
this.ssh = ssh;
|
||||
this.pwd = pwd;
|
||||
this.user = user;
|
||||
this.tp = tp;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,9 @@ package fr.la_banquise.backend.data.model;
|
||||
|
||||
import io.quarkus.hibernate.orm.panache.PanacheEntity;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -13,10 +16,21 @@ import lombok.NoArgsConstructor;
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table(name = "tp")
|
||||
public class Tp extends PanacheEntity {
|
||||
public class Tp {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
public Long id;
|
||||
public String name;
|
||||
public String description;
|
||||
public String pdfLink;
|
||||
public String respo;
|
||||
public String date;
|
||||
|
||||
public Tp(String name, String description, String pdfLink, String respo, String date) {
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.pdfLink = pdfLink;
|
||||
this.respo = respo;
|
||||
this.date = date;
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,9 @@ import com.fasterxml.jackson.annotation.JsonManagedReference;
|
||||
import io.quarkus.hibernate.orm.panache.PanacheEntity;
|
||||
import jakarta.persistence.CascadeType;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.GenerationType;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.OneToMany;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -23,10 +26,19 @@ import lombok.Setter;
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class User extends PanacheEntity {
|
||||
public class User {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
public Long id;
|
||||
public String name;
|
||||
|
||||
@JsonManagedReference
|
||||
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
|
||||
public List<Instance> instances;
|
||||
|
||||
public User(String name, List<Instance> instances) {
|
||||
this.name = name;
|
||||
this.instances = instances;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -9,4 +9,7 @@ import jakarta.enterprise.context.ApplicationScoped;
|
||||
*/
|
||||
@ApplicationScoped
|
||||
public class UserRepository implements PanacheRepository<User> {
|
||||
public User findByName(String name) {
|
||||
return find("name", name).firstResult();
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,12 @@ public class Endpoints {
|
||||
public Response getDashboard() {
|
||||
String username = identity.getPrincipal().getName();
|
||||
DashboardResponse dashboard = new DashboardResponse();
|
||||
dashboard.tps = tpService.getAllTps();
|
||||
if (identity.getRoles().contains("root")) {
|
||||
dashboard.tps = tpService.getAllTpsAdmin();
|
||||
} else {
|
||||
|
||||
dashboard.tps = tpService.getAllTps(identity.getPrincipal().getName());
|
||||
}
|
||||
dashboard.instances = instanceService.getAllInstances(username);
|
||||
return Response.ok(dashboard).build();
|
||||
}
|
||||
|
@ -30,13 +30,19 @@ public class TpEndpoints {
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public Response getAllTps() {
|
||||
return Response.ok(tpService.getAllTps()).build();
|
||||
if (identity.getRoles().contains("root")) {
|
||||
return Response.ok(tpService.getAllTpsAdmin()).build();
|
||||
}
|
||||
return Response.ok(tpService.getAllTps(identity.getPrincipal().getName())).build();
|
||||
}
|
||||
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Path("{id}")
|
||||
public Response getTp(@PathParam("id") Long id) {
|
||||
if (identity.getRoles().contains("root")) {
|
||||
return Response.ok(tpService.getTpAdmin(id)).build();
|
||||
}
|
||||
return Response.ok(tpService.getTp(id, identity.getPrincipal().getName())).build();
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,5 @@
|
||||
package fr.la_banquise.backend.rest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import fr.la_banquise.backend.rest.request.BulkUserRequest;
|
||||
import fr.la_banquise.backend.rest.request.UserRequest;
|
||||
import fr.la_banquise.backend.rest.response.LoggedUserResponse;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package fr.la_banquise.backend.rest.response;
|
||||
|
||||
import io.smallrye.common.constraint.Nullable;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
/**
|
||||
@ -13,7 +14,10 @@ public class PracticalResponse {
|
||||
public String respo;
|
||||
public String endDate;
|
||||
|
||||
@Nullable
|
||||
public String instanceName;
|
||||
@Nullable
|
||||
public String pwd;
|
||||
@Nullable
|
||||
public String ssh;
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import fr.la_banquise.backend.data.model.Instance;
|
||||
import fr.la_banquise.backend.data.model.Tp;
|
||||
import fr.la_banquise.backend.data.model.User;
|
||||
import fr.la_banquise.backend.data.repository.InstanceRepository;
|
||||
import fr.la_banquise.backend.data.repository.TpRepository;
|
||||
import fr.la_banquise.backend.data.repository.UserRepository;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.transaction.Transactional;
|
||||
@ -19,13 +21,18 @@ public class InstanceService {
|
||||
@Inject
|
||||
InstanceRepository instanceRepository;
|
||||
|
||||
@Inject
|
||||
UserRepository userRepository;
|
||||
|
||||
@Inject
|
||||
TpRepository tpRepository;
|
||||
|
||||
public List<Instance> getAllInstances() {
|
||||
return instanceRepository.findAll().list();
|
||||
}
|
||||
|
||||
public List<Instance> getAllInstances(String username) {
|
||||
User user = User.find("name", username).firstResult();
|
||||
System.out.println(username);
|
||||
User user = userRepository.findByName(username);
|
||||
return instanceRepository.find("user", user).list();
|
||||
}
|
||||
|
||||
@ -35,9 +42,8 @@ public class InstanceService {
|
||||
|
||||
@Transactional
|
||||
public Instance createInstance(String name, String ssh, String pwd, String username, Long tpId) {
|
||||
System.out.println(tpId);
|
||||
User user = User.find("name", username).firstResult();
|
||||
Tp tp = Tp.findById(tpId);
|
||||
User user = userRepository.findByName(username);
|
||||
Tp tp = tpRepository.findById(tpId);
|
||||
Instance instance = new Instance(name, ssh, pwd, user, tp);
|
||||
instanceRepository.persist(instance);
|
||||
return instance;
|
||||
@ -45,7 +51,7 @@ public class InstanceService {
|
||||
|
||||
@Transactional
|
||||
public Instance createInstance(String name, String ssh, String pwd, User user, Long tpId) {
|
||||
Tp tp = Tp.findById(tpId);
|
||||
Tp tp = tpRepository.findById(tpId);
|
||||
Instance instance = new Instance(name, ssh, pwd, user, tp);
|
||||
instanceRepository.persist(instance);
|
||||
return instance;
|
||||
|
@ -1,16 +1,21 @@
|
||||
package fr.la_banquise.backend.services;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import fr.la_banquise.backend.data.model.Instance;
|
||||
import fr.la_banquise.backend.data.model.Tp;
|
||||
import fr.la_banquise.backend.data.model.User;
|
||||
import fr.la_banquise.backend.data.repository.InstanceRepository;
|
||||
import fr.la_banquise.backend.data.repository.TpRepository;
|
||||
import fr.la_banquise.backend.data.repository.UserRepository;
|
||||
import fr.la_banquise.backend.rest.request.TpRequest;
|
||||
import fr.la_banquise.backend.rest.response.PracticalResponse;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.transaction.Transactional;
|
||||
import jakarta.ws.rs.core.SecurityContext;
|
||||
|
||||
/**
|
||||
* TpService
|
||||
@ -18,27 +23,49 @@ import jakarta.transaction.Transactional;
|
||||
@ApplicationScoped
|
||||
public class TpService {
|
||||
|
||||
@Inject
|
||||
SecurityContext security;
|
||||
|
||||
@Inject
|
||||
TpRepository tpRepository;
|
||||
|
||||
public List<Tp> getAllTps() {
|
||||
@Inject
|
||||
UserRepository userRepository;
|
||||
|
||||
@Inject
|
||||
InstanceRepository instanceRepository;
|
||||
|
||||
public List<Tp> getAllTpsAdmin() {
|
||||
return tpRepository.listAll();
|
||||
}
|
||||
|
||||
public List<Tp> getAllTps(String username) {
|
||||
return tpRepository.listAll().stream()
|
||||
.filter(tp -> instanceRepository.find("name = ?1 AND tp = ?2", username, tp) == null)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public PracticalResponse getTp(Long id, String username) {
|
||||
User user = User.find("name", username).firstResult();
|
||||
User user = userRepository.findByName(username);
|
||||
Tp tp = tpRepository.findById(id);
|
||||
Instance instance = Instance.find("user", user).firstResult();
|
||||
Instance instance = instanceRepository.find("name = ?1 AND tp = ?2", user.name, tp).firstResult();
|
||||
PracticalResponse res = new PracticalResponse(tp.name, tp.description, tp.pdfLink, tp.respo, tp.date,
|
||||
instance.name,
|
||||
instance.pwd, instance.ssh);
|
||||
return res;
|
||||
}
|
||||
|
||||
public PracticalResponse getTpAdmin(Long id) {
|
||||
Tp tp = tpRepository.findById(id);
|
||||
return new PracticalResponse(tp.name, tp.description, tp.pdfLink, tp.respo, tp.date,
|
||||
"",
|
||||
"", "");
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Tp createTp(TpRequest requestTp) {
|
||||
User user = User.find("name", "admin").firstResult();
|
||||
Tp tp = new Tp(requestTp.title, requestTp.description, requestTp.pdf, "", requestTp.date);
|
||||
Tp tp = new Tp(requestTp.title, requestTp.description, requestTp.pdf, security.getUserPrincipal().getName(),
|
||||
requestTp.date);
|
||||
tpRepository.persist(tp);
|
||||
return tp;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user