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.cerberus.entities.persistence.Application;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
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;
|
import java.util.UUID;
|
||||||
|
|
||||||
public interface ApplicationRepository extends JpaRepository<Application, 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;
|
package org.cerberus.services;
|
||||||
|
|
||||||
import org.cerberus.core.constant.Role;
|
import org.cerberus.core.exceptions.BadRequestException;
|
||||||
import org.cerberus.core.exceptions.InternalServerErrorException;
|
|
||||||
import org.cerberus.entities.persistence.Application;
|
import org.cerberus.entities.persistence.Application;
|
||||||
import org.cerberus.entities.persistence.ApplicationRole;
|
|
||||||
import org.cerberus.entities.persistence.User;
|
import org.cerberus.entities.persistence.User;
|
||||||
import org.cerberus.repositories.ApplicationRepository;
|
import org.cerberus.repositories.ApplicationRepository;
|
||||||
import org.cerberus.validators.ApplicationValidator;
|
import org.cerberus.validators.ApplicationValidator;
|
||||||
@@ -11,6 +9,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import static org.cerberus.core.constant.Role.MAINTAINER;
|
import static org.cerberus.core.constant.Role.MAINTAINER;
|
||||||
|
import static org.cerberus.core.utils.StringUtils.concat;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ApplicationService {
|
public class ApplicationService {
|
||||||
@@ -31,6 +30,10 @@ public class ApplicationService {
|
|||||||
public Application create(Application application, User user) {
|
public Application create(Application application, User user) {
|
||||||
applicationValidator.checkAllAttributsConstraints(application);
|
applicationValidator.checkAllAttributsConstraints(application);
|
||||||
|
|
||||||
|
if(applicationRepository.alreadyExists(application.getName())) {
|
||||||
|
throw new BadRequestException(concat("The application ", application.getName(), " already exists."));
|
||||||
|
}
|
||||||
|
|
||||||
applicationRepository.save(application);
|
applicationRepository.save(application);
|
||||||
// Application creator is by default a maintainer
|
// Application creator is by default a maintainer
|
||||||
applicationRoleService.create(application, user, MAINTAINER);
|
applicationRoleService.create(application, user, MAINTAINER);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ CREATE TABLE "user" (
|
|||||||
|
|
||||||
CREATE TABLE application (
|
CREATE TABLE application (
|
||||||
id uuid DEFAULT uuid_generate_v4(),
|
id uuid DEFAULT uuid_generate_v4(),
|
||||||
name VARCHAR NOT NULL,
|
name VARCHAR NOT NULL UNIQUE,
|
||||||
service_name VARCHAR NOT NULL,
|
service_name VARCHAR NOT NULL,
|
||||||
CONSTRAINT application_pk PRIMARY KEY (id)
|
CONSTRAINT application_pk PRIMARY KEY (id)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user