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