feat: bulk create user and more

This commit is contained in:
Malopieds 2024-10-14 21:50:32 +02:00
parent 10fcbbb36b
commit d513834f62
7 changed files with 60 additions and 10 deletions

View File

@ -1,9 +1,11 @@
package fr.la_banquise.backend.rest; package fr.la_banquise.backend.rest;
import fr.la_banquise.backend.rest.request.InstanceRequest;
import fr.la_banquise.backend.services.InstanceService; import fr.la_banquise.backend.services.InstanceService;
import io.quarkus.security.identity.SecurityIdentity; import io.quarkus.security.identity.SecurityIdentity;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path; import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces; import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
@ -24,8 +26,13 @@ public class InstanceEndpoints {
@GET @GET
public Response getAllInstances() { public Response getAllInstances() {
System.out.println(identity.getPrincipal());
String username = identity.getPrincipal().getName(); String username = identity.getPrincipal().getName();
return Response.ok(instanceService.getAllInstances(username)).build(); return Response.ok(instanceService.getAllInstances(username)).build();
} }
@POST
public Response createInstance(InstanceRequest request) {
instanceService.createInstance(request.name, request.ssh, request.pwd, request.username, request.tpId);
return Response.ok().build();
}
} }

View File

@ -1,7 +1,6 @@
package fr.la_banquise.backend.rest; package fr.la_banquise.backend.rest;
import fr.la_banquise.backend.services.TpService; import fr.la_banquise.backend.services.TpService;
import fr.la_banquise.backend.rest.request.TpForm;
import fr.la_banquise.backend.rest.request.TpRequest; import fr.la_banquise.backend.rest.request.TpRequest;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
import jakarta.inject.Inject; import jakarta.inject.Inject;

View File

@ -1,5 +1,8 @@
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.UserRequest; import fr.la_banquise.backend.rest.request.UserRequest;
import fr.la_banquise.backend.services.UserService; import fr.la_banquise.backend.services.UserService;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
@ -38,6 +41,14 @@ public class UserEndpoints {
@POST @POST
@RolesAllowed("admin") @RolesAllowed("admin")
public Response createUser(UserRequest user) { public Response createUser(UserRequest user) {
return Response.ok(userService.crateUser(user.firstName, user.lastName)).build(); return Response.ok(userService.createUser(user.name)).build();
}
@POST
@RolesAllowed("root")
@Path("/jdmi")
public Response createJdmiUsers(List<UserRequest> users) {
userService.createJdmiUser(users);
return Response.ok().build();
} }
} }

View File

@ -0,0 +1,15 @@
package fr.la_banquise.backend.rest.request;
import io.smallrye.common.constraint.Nullable;
/**
* InstanceRequest
*/
public class InstanceRequest {
public String name;
public String ssh;
public String pwd;
public String username;
@Nullable
public int tpId;
}

View File

@ -4,6 +4,6 @@ package fr.la_banquise.backend.rest.request;
* UserRequest * UserRequest
*/ */
public class UserRequest { public class UserRequest {
public String firstName; public String name;
public String lastName; public String email;
} }

View File

@ -3,6 +3,7 @@ package fr.la_banquise.backend.services;
import java.util.List; import java.util.List;
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.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 jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.context.ApplicationScoped;
@ -33,9 +34,10 @@ public class InstanceService {
} }
@Transactional @Transactional
public Instance createInstance(String name, String ssh, String pwd) { public Instance createInstance(String name, String ssh, String pwd, String username, int tpId) {
User admin = User.find("name", "admin").firstResult(); User user = User.find("name", username).firstResult();
Instance instance = new Instance(name, ssh, pwd, admin, null); Tp tp = Tp.findById(tpId);
Instance instance = new Instance(name, ssh, pwd, user, tp);
instanceRepository.persist(instance); instanceRepository.persist(instance);
return instance; return instance;
} }

View File

@ -1,9 +1,12 @@
package fr.la_banquise.backend.services; package fr.la_banquise.backend.services;
import java.util.ArrayList;
import java.util.List; import java.util.List;
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.UserRepository; import fr.la_banquise.backend.data.repository.UserRepository;
import fr.la_banquise.backend.rest.request.UserRequest;
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;
@ -17,6 +20,9 @@ public class UserService {
@Inject @Inject
UserRepository userRepository; UserRepository userRepository;
@Inject
InstanceService instanceService;
public List<User> getAllUsers() { public List<User> getAllUsers() {
return userRepository.listAll(); return userRepository.listAll();
} }
@ -26,8 +32,8 @@ public class UserService {
} }
@Transactional @Transactional
public User crateUser(String firstName, String lastName) { public User createUser(String name) {
User user = new User(firstName, lastName); User user = new User(name, new ArrayList<>());
userRepository.persist(user); userRepository.persist(user);
return user; return user;
} }
@ -43,4 +49,14 @@ public class UserService {
return user; return user;
} }
@Transactional
public List<User> createJdmiUser(List<UserRequest> usersRequest) {
List<User> users = new ArrayList<>();
for (UserRequest user : usersRequest) {
users.add(createUser(user.name));
instanceService.createInstance(user.name, "test", "test", "test", 1);
}
return new ArrayList<User>();
}
} }