From 2fd582e2caf4ae2c2797110b0f7e2491aa342717 Mon Sep 17 00:00:00 2001 From: Jonathan Christison Date: Sun, 2 Jul 2023 01:36:22 +0100 Subject: [PATCH] ORM kinda working --- .../java/com/redhat/pctsec/model/Scan.java | 38 +++++++++++++++++-- .../com/redhat/pctsec/model/ScanRequest.java | 2 +- .../com/redhat/pctsec/model/ScanRequests.java | 33 ++++++++++++++-- .../pctsec/rest/v1alpha1/ScanResource.java | 14 +++++-- src/main/resources/application.properties | 3 +- 5 files changed, 77 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/redhat/pctsec/model/Scan.java b/src/main/java/com/redhat/pctsec/model/Scan.java index ec1e0da..1e21e98 100644 --- a/src/main/java/com/redhat/pctsec/model/Scan.java +++ b/src/main/java/com/redhat/pctsec/model/Scan.java @@ -3,8 +3,10 @@ package com.redhat.pctsec.model; import jakarta.persistence.*; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotNull; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; -import java.util.Calendar; +import java.time.Instant; import java.util.UUID; enum ScanState { @@ -13,6 +15,26 @@ enum ScanState { @Entity public class Scan { + public Scan() { + this.scanRequests = new ScanRequests(); + } + + public Instant getCreationTimestamp() { + return creationTimestamp; + } + + public void setCreationTimestamp(Instant creationTimestamp) { + this.creationTimestamp = creationTimestamp; + } + + public ScanState getState() { + return state; + } + + public void setState(ScanState state) { + this.state = state; + } + public String getProductName() { return productName; } @@ -59,9 +81,17 @@ public class Scan { @Column(name="proudct_name") private String productName; - @Temporal(TemporalType.TIMESTAMP) + //@Temporal(TemporalType.TIMESTAMP) + + @CreationTimestamp @Column(name="creation_timestamp") - private Calendar creationTimestamp; + //@NotNull + private Instant creationTimestamp; + + @UpdateTimestamp + @Column(name="update_timestamp") + //@NotNull + private Instant updateTimestamp; @Column(name="state") @Enumerated(EnumType.STRING) @@ -75,7 +105,7 @@ public class Scan { @Email private String email; - @OneToOne + @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "scan_requests_id", referencedColumnName = "id") private ScanRequests scanRequests; } diff --git a/src/main/java/com/redhat/pctsec/model/ScanRequest.java b/src/main/java/com/redhat/pctsec/model/ScanRequest.java index 15c064b..3678db4 100644 --- a/src/main/java/com/redhat/pctsec/model/ScanRequest.java +++ b/src/main/java/com/redhat/pctsec/model/ScanRequest.java @@ -36,7 +36,7 @@ public class ScanRequest { @OneToOne @JoinColumn(name = "pnc_build_id", referencedColumnName = "id") PNCBuild pncBuild; - @OneToOne + @OneToOne(fetch=FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "git_id", referencedColumnName = "id") Git git; diff --git a/src/main/java/com/redhat/pctsec/model/ScanRequests.java b/src/main/java/com/redhat/pctsec/model/ScanRequests.java index c6ffa59..df8ad3e 100644 --- a/src/main/java/com/redhat/pctsec/model/ScanRequests.java +++ b/src/main/java/com/redhat/pctsec/model/ScanRequests.java @@ -17,21 +17,22 @@ public class ScanRequests { @GeneratedValue private UUID id; - @OneToMany(fetch=FetchType.LAZY) + @OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "scan_request_id", referencedColumnName = "id") - private Set scanRequests = new HashSet<>(); + private Set scanRequests;// = new HashSet<>(); - //@Column(name="scan_properties") + @Column(name="scan_properties") private String scanProperties; - //@Column(name="scan_metadata") + @Column(name="scan_metadata") private String scanMetadata; public ScanRequests(){ //Default to the Snyk scan this.scanProperties = "-p snyk-only-unstable --tarball-build-script=\":\""; + this.scanRequests = new HashSet<>(); } public ScanRequests(pssaas pssaas){ @@ -75,4 +76,28 @@ public class ScanRequests { s.executeScan(); } } + + public Set getScanRequests() { + return scanRequests; + } + + public void setScanRequests(Set scanRequests) { + this.scanRequests = scanRequests; + } + + public String getScanProperties() { + return scanProperties; + } + + public void setScanProperties(String scanProperties) { + this.scanProperties = scanProperties; + } + + public String getScanMetadata() { + return scanMetadata; + } + + public void setScanMetadata(String scanMetadata) { + this.scanMetadata = scanMetadata; + } } diff --git a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java index 72276d4..565e95a 100644 --- a/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java +++ b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java @@ -8,12 +8,14 @@ import com.redhat.pctsec.model.api.request.pssaas; import com.redhat.pctsec.model.jpa.ScanRepository; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; +import jakarta.transaction.Transactional; import jakarta.validation.Valid; import jakarta.ws.rs.*; import org.jboss.resteasy.reactive.RestQuery; import java.util.HashMap; import java.util.List; +import java.util.Set; import java.util.UUID; @ApplicationScoped @@ -58,14 +60,20 @@ public class ScanResource { @GET @Path("single/git") @Produces({"application/json"}) + @Transactional public Scan singleGit(@RestQuery String repo, @RestQuery String ref) { //ScanRequest scanRequest = new ScanRequest(new Git(repo, ref)); - ScanRequests scanRequests = new ScanRequests(); - scanRequests.addGit(repo,ref); + + //sr.persist(scanRequests); Scan s = new Scan(); - s.setScanRequests(scanRequests); + //s.setScanRequests(new ScanRequests().setScanRequests((Set) new Git(repo, ref))); + //ScanRequests scanRequests = new ScanRequests(); + //scanRequests.addGit(repo,ref); + s.setRequestor("jochrist"); + s.getScanRequests().addGit(repo,ref); + //s.setScanRequests( sr.persist(s); return s; } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8f8a1d1..1115fea 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -21,10 +21,11 @@ #%dev.quarkus.kerberos.keytab-path= HTTP_osh-pct-security-tooling.apps.ocp-c1.prod.psi.redhat.com@IPA.REDHAT.COM.keytab #%dev.quarkus.kerberos.service-principal-name= HTTP/osh-pct-security-tooling.apps.ocp-c1.prod.psi.redhat.com@IPA.REDHAT.COM +%dev.quarkus.datasource.devservices.enabled=true %dev.quarkus.datasource.db-kind = postgresql %dev.quarkus.datasource.username = quarkus %dev.quarkus.datasource.password = quarkus -%dev.quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/hibernate_db +#%dev.quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/hibernate_db %dev.quarkus.hibernate-orm.database.generation=drop-and-create #Always provide swagger ui %dev.quarkus.swagger-ui.always-include=true