Add control to avoid multiple application with same name.
This commit is contained in:
@@ -2,8 +2,12 @@ package org.cerberus.repositories;
|
||||
|
||||
import org.cerberus.entities.persistence.Application;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public interface ApplicationRepository extends JpaRepository<Application, UUID> {
|
||||
@Query(value = "SELECT EXISTS(SELECT id FROM application WHERE name = :name)", nativeQuery = true)
|
||||
Boolean alreadyExists(@Param("name") String name);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package org.cerberus.services;
|
||||
|
||||
import org.cerberus.core.constant.Role;
|
||||
import org.cerberus.core.exceptions.InternalServerErrorException;
|
||||
import org.cerberus.core.exceptions.BadRequestException;
|
||||
import org.cerberus.entities.persistence.Application;
|
||||
import org.cerberus.entities.persistence.ApplicationRole;
|
||||
import org.cerberus.entities.persistence.User;
|
||||
import org.cerberus.repositories.ApplicationRepository;
|
||||
import org.cerberus.validators.ApplicationValidator;
|
||||
@@ -11,6 +9,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.cerberus.core.constant.Role.MAINTAINER;
|
||||
import static org.cerberus.core.utils.StringUtils.concat;
|
||||
|
||||
@Service
|
||||
public class ApplicationService {
|
||||
@@ -31,6 +30,10 @@ public class ApplicationService {
|
||||
public Application create(Application application, User user) {
|
||||
applicationValidator.checkAllAttributsConstraints(application);
|
||||
|
||||
if(applicationRepository.alreadyExists(application.getName())) {
|
||||
throw new BadRequestException(concat("The application ", application.getName(), " already exists."));
|
||||
}
|
||||
|
||||
applicationRepository.save(application);
|
||||
// Application creator is by default a maintainer
|
||||
applicationRoleService.create(application, user, MAINTAINER);
|
||||
|
||||
@@ -10,7 +10,7 @@ CREATE TABLE "user" (
|
||||
|
||||
CREATE TABLE application (
|
||||
id uuid DEFAULT uuid_generate_v4(),
|
||||
name VARCHAR NOT NULL,
|
||||
name VARCHAR NOT NULL UNIQUE,
|
||||
service_name VARCHAR NOT NULL,
|
||||
CONSTRAINT application_pk PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user