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
No related branches found
No related tags found
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 {
log.error("Failed to grant permission {}", permission);
log.debug("failed to grant permission {}, owner is not the current user", permission);
return false;
} else if (container.getDatabases().size() > 0) {
} else if (container.getDatabase() != null) {
log.error("Failed to grant permission {}", permission);
log.debug("failed to grant permission {}, databases present in the container", permission);
return false;
......
......@@ -38,7 +38,7 @@ public interface ContainerMapper {
@Mapping(source = "state", target = "state", qualifiedByName = "containerStateDto"),
@Mapping(source = "id", target = "hash"),
@Mapping(target = "id", ignore = true),
@Mapping(target = "databases", ignore = true),
@Mapping(target = "database", ignore = true),
})
ContainerDto inspectContainerResponseToContainerDto(InspectContainerResponse data);
......
......@@ -11,7 +11,7 @@ public interface ContainerMapper {
@Mappings({
@Mapping(target = "id", source = "id"),
@Mapping(target = "databases", source = "databases", ignore = true),
@Mapping(target = "database", source = "database", ignore = true),
})
ContainerDto containerToContainerDto(Container data);
......
......@@ -124,7 +124,7 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
DatabaseMalformedException, AmqpException, ContainerConnectionException, UserNotFoundException,
DatabaseNameExistsException, DatabaseConnectionException, QueryMalformedException {
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.");
throw new DatabaseMalformedException("Currently only one database per container is supported");
}
......
......@@ -42,9 +42,9 @@ public class ContainerDto {
@Schema(example = "running")
private ContainerStateDto state;
@ToString.Exclude
@Schema
private List<DatabaseDto> databases;
@ToString.Exclude
private DatabaseDto database;
@JsonProperty("ip_address")
private String ipAddress;
......
......@@ -53,15 +53,19 @@ public class Container {
@Column
private Integer port;
@ToString.Exclude
@org.springframework.data.annotation.Transient
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@OneToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
})
private List<Database> databases;
private Database database;
@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;
@Column
......
......@@ -64,7 +64,7 @@ public class ContainerImage {
@ToString.Exclude
@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;
@Column(nullable = false, updatable = false)
......
......@@ -30,7 +30,7 @@ public class ContainerImageDate {
@org.springframework.data.annotation.Transient
@ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "iid", insertable = false, updatable = false)
private ContainerImage image;
......
......@@ -42,7 +42,7 @@ public class ContainerImageEnvironmentItem {
@ToString.Exclude
@org.springframework.data.annotation.Transient
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "iid", referencedColumnName = "id", insertable = false, updatable = false)
})
......
......@@ -42,9 +42,9 @@ public class Database {
})
private User creator;
@org.springframework.data.annotation.Transient
@ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@org.springframework.data.annotation.Transient
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
})
......@@ -68,6 +68,7 @@ public class Database {
})
private User contact;
@org.springframework.data.annotation.Transient
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumns({
@JoinColumn(name = "tdbid", referencedColumnName = "id", insertable = false, updatable = false)
......
......@@ -42,7 +42,7 @@ public class View {
private User creator;
@org.springframework.data.annotation.Transient
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "vdbid", insertable = false, updatable = false)
private Database database;
......
......@@ -58,8 +58,7 @@ public class Table {
private String description;
@org.springframework.data.annotation.Transient
@ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "tdbid", insertable = false, updatable = false)
private Database database;
......
......@@ -54,7 +54,7 @@ public class TableColumn implements Comparable<TableColumn> {
@org.springframework.data.annotation.Transient
@ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "tid", referencedColumnName = "id", insertable = false, updatable = false),
@JoinColumn(name = "cdbid", referencedColumnName = "tdbid", insertable = false, updatable = false)
......
......@@ -35,7 +35,7 @@ public class Concept {
@org.springframework.data.annotation.Transient
@ToString.Exclude
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "mdb_columns_concepts",
joinColumns = @JoinColumn(name = "concept_id", referencedColumnName = "id", insertable = false, updatable = false),
inverseJoinColumns = {
......
......@@ -42,7 +42,7 @@ public class Creator {
@org.springframework.data.annotation.Transient
@ToString.Exclude
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "pid", referencedColumnName = "id", insertable = false, updatable = false)
private Identifier identifier;
......
......@@ -39,7 +39,7 @@ public class TimeSecret {
@org.springframework.data.annotation.Transient
@ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "uid", referencedColumnName = "userid", insertable = false, updatable = false)
})
......
......@@ -4,6 +4,8 @@ import at.tuwien.BaseUnitTest;
import at.tuwien.config.DockerConfig;
import at.tuwien.config.IndexInitializer;
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.exception.*;
import at.tuwien.repository.jpa.*;
......@@ -22,10 +24,12 @@ import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import javax.transaction.Transactional;
import java.io.File;
import java.security.Principal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static at.tuwien.config.DockerConfig.dockerClient;
import static at.tuwien.config.DockerConfig.hostConfig;
......@@ -64,6 +68,9 @@ public class TableServiceIntegrationTest extends BaseUnitTest {
@Autowired
private UserRepository userRepository;
@Autowired
private ImageEnvironmentRepository imageEnvironmentRepository;
@BeforeAll
public static void beforeAll() throws InterruptedException {
afterAll();
......@@ -127,15 +134,12 @@ public class TableServiceIntegrationTest extends BaseUnitTest {
@BeforeEach
public void beforeEach() {
userRepository.save(USER_1);
userRepository.save(USER_2);
imageRepository.save(IMAGE_1);
containerRepository.save(CONTAINER_1);
containerRepository.save(CONTAINER_2);
databaseRepository.save(DATABASE_1) /* public */;
databaseRepository.save(DATABASE_2) /* private */;
tableRepository.save(TABLE_1);
tableRepository.save(TABLE_2);
CONTAINER_1.setDatabase(DATABASE_1);
CONTAINER_2.setDatabase(DATABASE_2);
TABLE_1.setDatabase(DATABASE_1);
TABLE_2.setDatabase(DATABASE_2);
tableRepository.save(TABLE_1) /* public */;
tableRepository.save(TABLE_2) /* private */;
}
@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