Skip to content
Snippets Groups Projects
Unverified Commit f66a70f3 authored by Martin Weise's avatar Martin Weise
Browse files

Added 1:1 relationship

parent 3f6c7b84
Branches
Tags
4 merge requests!129New module for citation as they occur multiple,!121Modified logging, modified logging level, modified flasgger endpoint,!113Resolve "Bugs related with Query Service",!109Resolve "Use MariaDB for metadata database"
Showing
with 49 additions and 30 deletions
...@@ -56,7 +56,7 @@ public class PermissionEvaluatorImpl implements PermissionEvaluator { ...@@ -56,7 +56,7 @@ public class PermissionEvaluatorImpl implements PermissionEvaluator {
log.error("Failed to grant permission {}", permission); log.error("Failed to grant permission {}", permission);
log.debug("failed to grant permission {}, owner is not the current user", permission); log.debug("failed to grant permission {}, owner is not the current user", permission);
return false; return false;
} else if (container.getDatabases().size() > 0) { } else if (container.getDatabase() != null) {
log.error("Failed to grant permission {}", permission); log.error("Failed to grant permission {}", permission);
log.debug("failed to grant permission {}, databases present in the container", permission); log.debug("failed to grant permission {}, databases present in the container", permission);
return false; return false;
......
...@@ -38,7 +38,7 @@ public interface ContainerMapper { ...@@ -38,7 +38,7 @@ public interface ContainerMapper {
@Mapping(source = "state", target = "state", qualifiedByName = "containerStateDto"), @Mapping(source = "state", target = "state", qualifiedByName = "containerStateDto"),
@Mapping(source = "id", target = "hash"), @Mapping(source = "id", target = "hash"),
@Mapping(target = "id", ignore = true), @Mapping(target = "id", ignore = true),
@Mapping(target = "databases", ignore = true), @Mapping(target = "database", ignore = true),
}) })
ContainerDto inspectContainerResponseToContainerDto(InspectContainerResponse data); ContainerDto inspectContainerResponseToContainerDto(InspectContainerResponse data);
......
...@@ -11,7 +11,7 @@ public interface ContainerMapper { ...@@ -11,7 +11,7 @@ public interface ContainerMapper {
@Mappings({ @Mappings({
@Mapping(target = "id", source = "id"), @Mapping(target = "id", source = "id"),
@Mapping(target = "databases", source = "databases", ignore = true), @Mapping(target = "database", source = "database", ignore = true),
}) })
ContainerDto containerToContainerDto(Container data); ContainerDto containerToContainerDto(Container data);
......
...@@ -124,7 +124,7 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe ...@@ -124,7 +124,7 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
DatabaseMalformedException, AmqpException, ContainerConnectionException, UserNotFoundException, DatabaseMalformedException, AmqpException, ContainerConnectionException, UserNotFoundException,
DatabaseNameExistsException, DatabaseConnectionException, QueryMalformedException { DatabaseNameExistsException, DatabaseConnectionException, QueryMalformedException {
final Container container = containerService.find(containerId); final Container container = containerService.find(containerId);
if (container.getDatabases().size() != 0) { if (container.getDatabase() != null) {
log.error("Currently we only support one database per container."); log.error("Currently we only support one database per container.");
throw new DatabaseMalformedException("Currently only one database per container is supported"); throw new DatabaseMalformedException("Currently only one database per container is supported");
} }
......
...@@ -42,9 +42,9 @@ public class ContainerDto { ...@@ -42,9 +42,9 @@ public class ContainerDto {
@Schema(example = "running") @Schema(example = "running")
private ContainerStateDto state; private ContainerStateDto state;
@ToString.Exclude
@Schema @Schema
private List<DatabaseDto> databases; @ToString.Exclude
private DatabaseDto database;
@JsonProperty("ip_address") @JsonProperty("ip_address")
private String ipAddress; private String ipAddress;
......
...@@ -53,15 +53,19 @@ public class Container { ...@@ -53,15 +53,19 @@ public class Container {
@Column @Column
private Integer port; private Integer port;
@ToString.Exclude
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @OneToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false) @JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
}) })
private List<Database> databases; private Database database;
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "image_id", referencedColumnName = "id", insertable = false, updatable = false)
})
private ContainerImage image; private ContainerImage image;
@Column @Column
......
...@@ -64,7 +64,7 @@ public class ContainerImage { ...@@ -64,7 +64,7 @@ public class ContainerImage {
@ToString.Exclude @ToString.Exclude
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.DETACH, CascadeType.MERGE}, mappedBy = "image") @OneToMany(fetch = FetchType.LAZY, mappedBy = "image")
private List<Container> containers; private List<Container> containers;
@Column(nullable = false, updatable = false) @Column(nullable = false, updatable = false)
......
...@@ -30,7 +30,7 @@ public class ContainerImageDate { ...@@ -30,7 +30,7 @@ public class ContainerImageDate {
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ToString.Exclude @ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "iid", insertable = false, updatable = false) @JoinColumn(name = "iid", insertable = false, updatable = false)
private ContainerImage image; private ContainerImage image;
......
...@@ -42,7 +42,7 @@ public class ContainerImageEnvironmentItem { ...@@ -42,7 +42,7 @@ public class ContainerImageEnvironmentItem {
@ToString.Exclude @ToString.Exclude
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "iid", referencedColumnName = "id", insertable = false, updatable = false) @JoinColumn(name = "iid", referencedColumnName = "id", insertable = false, updatable = false)
}) })
......
...@@ -42,9 +42,9 @@ public class Database { ...@@ -42,9 +42,9 @@ public class Database {
}) })
private User creator; private User creator;
@org.springframework.data.annotation.Transient
@ToString.Exclude @ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @org.springframework.data.annotation.Transient
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false) @JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
}) })
...@@ -68,6 +68,7 @@ public class Database { ...@@ -68,6 +68,7 @@ public class Database {
}) })
private User contact; private User contact;
@org.springframework.data.annotation.Transient
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "tdbid", referencedColumnName = "id", insertable = false, updatable = false) @JoinColumn(name = "tdbid", referencedColumnName = "id", insertable = false, updatable = false)
......
...@@ -42,7 +42,7 @@ public class View { ...@@ -42,7 +42,7 @@ public class View {
private User creator; private User creator;
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "vdbid", insertable = false, updatable = false) @JoinColumn(name = "vdbid", insertable = false, updatable = false)
private Database database; private Database database;
......
...@@ -58,8 +58,7 @@ public class Table { ...@@ -58,8 +58,7 @@ public class Table {
private String description; private String description;
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ToString.Exclude @ManyToOne(fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumn(name = "tdbid", insertable = false, updatable = false) @JoinColumn(name = "tdbid", insertable = false, updatable = false)
private Database database; private Database database;
......
...@@ -54,7 +54,7 @@ public class TableColumn implements Comparable<TableColumn> { ...@@ -54,7 +54,7 @@ public class TableColumn implements Comparable<TableColumn> {
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ToString.Exclude @ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "tid", referencedColumnName = "id", insertable = false, updatable = false), @JoinColumn(name = "tid", referencedColumnName = "id", insertable = false, updatable = false),
@JoinColumn(name = "cdbid", referencedColumnName = "tdbid", insertable = false, updatable = false) @JoinColumn(name = "cdbid", referencedColumnName = "tdbid", insertable = false, updatable = false)
......
...@@ -35,7 +35,7 @@ public class Concept { ...@@ -35,7 +35,7 @@ public class Concept {
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ToString.Exclude @ToString.Exclude
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) @OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "mdb_columns_concepts", @JoinTable(name = "mdb_columns_concepts",
joinColumns = @JoinColumn(name = "concept_id", referencedColumnName = "id", insertable = false, updatable = false), joinColumns = @JoinColumn(name = "concept_id", referencedColumnName = "id", insertable = false, updatable = false),
inverseJoinColumns = { inverseJoinColumns = {
......
...@@ -42,7 +42,7 @@ public class Creator { ...@@ -42,7 +42,7 @@ public class Creator {
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ToString.Exclude @ToString.Exclude
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "pid", referencedColumnName = "id", insertable = false, updatable = false) @JoinColumn(name = "pid", referencedColumnName = "id", insertable = false, updatable = false)
private Identifier identifier; private Identifier identifier;
......
...@@ -39,7 +39,7 @@ public class TimeSecret { ...@@ -39,7 +39,7 @@ public class TimeSecret {
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
@ToString.Exclude @ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({ @JoinColumns({
@JoinColumn(name = "uid", referencedColumnName = "userid", insertable = false, updatable = false) @JoinColumn(name = "uid", referencedColumnName = "userid", insertable = false, updatable = false)
}) })
......
...@@ -4,6 +4,8 @@ import at.tuwien.BaseUnitTest; ...@@ -4,6 +4,8 @@ import at.tuwien.BaseUnitTest;
import at.tuwien.config.DockerConfig; import at.tuwien.config.DockerConfig;
import at.tuwien.config.IndexInitializer; import at.tuwien.config.IndexInitializer;
import at.tuwien.config.ReadyConfig; import at.tuwien.config.ReadyConfig;
import at.tuwien.entities.container.Container;
import at.tuwien.entities.database.Database;
import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.Table;
import at.tuwien.exception.*; import at.tuwien.exception.*;
import at.tuwien.repository.jpa.*; import at.tuwien.repository.jpa.*;
...@@ -22,10 +24,12 @@ import org.springframework.boot.test.mock.mockito.MockBean; ...@@ -22,10 +24,12 @@ import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit.jupiter.SpringExtension;
import javax.transaction.Transactional;
import java.io.File; import java.io.File;
import java.security.Principal; import java.security.Principal;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import static at.tuwien.config.DockerConfig.dockerClient; import static at.tuwien.config.DockerConfig.dockerClient;
import static at.tuwien.config.DockerConfig.hostConfig; import static at.tuwien.config.DockerConfig.hostConfig;
...@@ -64,6 +68,9 @@ public class TableServiceIntegrationTest extends BaseUnitTest { ...@@ -64,6 +68,9 @@ public class TableServiceIntegrationTest extends BaseUnitTest {
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired
private ImageEnvironmentRepository imageEnvironmentRepository;
@BeforeAll @BeforeAll
public static void beforeAll() throws InterruptedException { public static void beforeAll() throws InterruptedException {
afterAll(); afterAll();
...@@ -127,15 +134,12 @@ public class TableServiceIntegrationTest extends BaseUnitTest { ...@@ -127,15 +134,12 @@ public class TableServiceIntegrationTest extends BaseUnitTest {
@BeforeEach @BeforeEach
public void beforeEach() { public void beforeEach() {
userRepository.save(USER_1); CONTAINER_1.setDatabase(DATABASE_1);
userRepository.save(USER_2); CONTAINER_2.setDatabase(DATABASE_2);
imageRepository.save(IMAGE_1); TABLE_1.setDatabase(DATABASE_1);
containerRepository.save(CONTAINER_1); TABLE_2.setDatabase(DATABASE_2);
containerRepository.save(CONTAINER_2); tableRepository.save(TABLE_1) /* public */;
databaseRepository.save(DATABASE_1) /* public */; tableRepository.save(TABLE_2) /* private */;
databaseRepository.save(DATABASE_2) /* private */;
tableRepository.save(TABLE_1);
tableRepository.save(TABLE_2);
} }
@Test @Test
......
package at.tuwien.repository.jpa;
import at.tuwien.entities.container.image.ContainerImage;
import at.tuwien.entities.container.image.ContainerImageEnvironmentItem;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ImageEnvironmentRepository extends JpaRepository<ContainerImageEnvironmentItem, Long> {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment