Skip to content
9 changes: 7 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@

<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<kotlin.version>1.7.10</kotlin.version>
<kotlin.version>1.7.21</kotlin.version>
<lombok.version>1.18.24</lombok.version>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus.platform.version>2.12.1.Final</quarkus.platform.version>
<quarkus.platform.version>2.15.1.Final</quarkus.platform.version>
<skipITs>true</skipITs>
<surefire-plugin.version>3.0.0-M7</surefire-plugin.version>
<failsafe-plugin.version>3.0.0-M7</failsafe-plugin.version>
Expand Down Expand Up @@ -69,6 +69,11 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-cache</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
Expand Down
1 change: 0 additions & 1 deletion src/main/kotlin/org/kravbank/domain/Code.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class Code : PanacheEntity() {
)
@JsonManagedReference(value = "value-codes")
@JsonIgnore
@JoinColumn(name = "codelist_id_fk")
var codelist: Codelist? = null

}
Expand Down
3 changes: 2 additions & 1 deletion src/main/kotlin/org/kravbank/domain/Codelist.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import javax.persistence.*
@Entity
class Codelist : PanacheEntity() {

@Column(columnDefinition="TEXT")
lateinit var title: String

@Column(columnDefinition="TEXT")
lateinit var description: String

@Column(unique = true)
Expand All @@ -31,6 +33,5 @@ class Codelist : PanacheEntity() {
)
@JsonManagedReference(value = "val-codelist")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null
}
3 changes: 2 additions & 1 deletion src/main/kotlin/org/kravbank/domain/Need.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import javax.persistence.*
@Entity
class Need : PanacheEntity() {

@Column(columnDefinition="TEXT")
lateinit var title: String

@Column(columnDefinition="TEXT")
lateinit var description: String

@Column(unique = true)
Expand All @@ -23,7 +25,6 @@ class Need : PanacheEntity() {
)
@JsonManagedReference(value = "val-need-project")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

@OneToMany(
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/org/kravbank/domain/Product.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ import javax.persistence.*
@Where(clause = "deletedDate is null")
class Product : SoftDeletable() {

@Column(columnDefinition="TEXT")
lateinit var title: String

@Column(columnDefinition="TEXT")
lateinit var description: String

override var deletedDate: LocalDateTime? = null
Expand All @@ -26,7 +28,6 @@ class Product : SoftDeletable() {
)
@JsonManagedReference(value = "product")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

@ManyToOne(
Expand All @@ -35,6 +36,5 @@ class Product : SoftDeletable() {
)
@JsonManagedReference(value = "val-reqvariant-product")
@JsonIgnore
@JoinColumn(name = "requirementvariant_id_fk")
var requirementvariant: RequirementVariant? = null
}
5 changes: 1 addition & 4 deletions src/main/kotlin/org/kravbank/domain/Project.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@ class Project : SoftDeletable() {

lateinit var description: String

@Column(
unique = true,
name = "ref"
)
@Column(unique = true)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unikhet skal være innenfor prosjekt, ikke på tvers av prosjekter.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Men det her er vel ref-en til selve prosjektet. Om den ikke er unik på toppnivå så vil vi ikke kunne hente prosjekter basert på ref?

var ref: String = UUID.randomUUID().toString()

override var deletedDate: LocalDateTime? = null
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/org/kravbank/domain/Publication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import javax.persistence.*
@Where(clause = "deletedDate is null")
class Publication : SoftDeletable() {

@Column(columnDefinition="TEXT")
lateinit var comment: String

var date: LocalDateTime = LocalDateTime.now()
Expand All @@ -28,7 +29,6 @@ class Publication : SoftDeletable() {
)
@JsonManagedReference(value = "val-publication")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

}
4 changes: 2 additions & 2 deletions src/main/kotlin/org/kravbank/domain/Requirement.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import javax.persistence.*
@Entity
class Requirement : PanacheEntity() {

@Column(columnDefinition="TEXT")
var title: String = ""

@Column(columnDefinition="TEXT")
var description: String = ""

@OneToMany(
Expand All @@ -31,7 +33,6 @@ class Requirement : PanacheEntity() {
)
@JsonManagedReference(value = "val-requirement")
@JsonIgnore
@JoinColumn(name = "project_id_fk")
var project: Project? = null

@ManyToOne(
Expand All @@ -40,6 +41,5 @@ class Requirement : PanacheEntity() {
)
@JsonManagedReference(value = "val-need-requirement")
@JsonIgnore
@JoinColumn(name = "need_id_fk")
var need: Need? = null
}
1 change: 0 additions & 1 deletion src/main/kotlin/org/kravbank/domain/RequirementVariant.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ class RequirementVariant : PanacheEntity() {
)
@JsonManagedReference(value = "val-requirementVariant")
@JsonIgnore
@JoinColumn(name = "requirement_id_fk")
var requirement: Requirement? = null

@OneToMany(
Expand Down
200 changes: 200 additions & 0 deletions src/main/kotlin/org/kravbank/domain/frontend/FrontendTypes.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
package org.kravbank.domain.frontend

import com.fasterxml.jackson.annotation.JsonProperty

typealias Banks = List<Bank>

data class Bank(
val id: String,
val title: String,
val description: String,
val needs: List<Need>,
val codelist: List<Codelist>,
val products: List<Product>,
val publications: List<Publication>,
val tags: List<Tag>,
val version: Long,
val publishedDate: String?,
val type: String,
val inheritedBanks: List<Any?>,
val sourceOriginal: Any?,
val sourceRel: Any?,
val projectId: String?,
val deletedDate: Any?,
)

data class Need(
val id: String,
val title: String,
val description: String,
val requirements: List<Requirement>,
val type: String,
val parent: String,
val sourceOriginal: String?,
val sourceRel: Any?,
)

data class Requirement(
val id: String,
val title: String,
val description: String,
val needId: String,
val type: String,
val variants: List<Variant>,
val tags: List<Any?>?,
val sourceOriginal: String?,
val sourceRel: Any?,
val weight: Long?,
@JsonProperty("requirement_Type")
val requirementType: String?,
)

data class Variant(
val id: String,
val requirementText: String,
val instruction: String,
val useProduct: Boolean,
val useSpesification: Boolean,
val useQualification: Boolean,
val products: List<String>,
val questions: List<Question>,
val type: String?,
val description: String?,
)

data class Question(
val id: String,
val type: String,
val config: Config?,
val answer: Answer?,
val sourceRel: Any?,
val sourceOriginal: Any?,
)

data class Config(
val min: Long?,
val max: Long?,
val step: Double?,
val unit: String?,
val defaultPoint: Long?,
val scoreValues: List<ScoreValue>?,
val fromBoundary: Any?,
val toBoundary: Any?,
val isPeriod: Boolean?,
val periodMin: Long?,
val periodMax: Long?,
val dateScores: List<DateScore>?,
val periodMinutes: Long?,
val periodHours: Long?,
val timeScores: List<TimeScore>?,
val pointsUnconfirmed: Long?,
val pointsNonPrefered: Long?,
val preferedAlternative: Boolean?,
val discountNonPrefered: Long?,
val discountPrefered: Long?,
val defaultDiscount: Long?,
val mandatoryCodes: List<Any?>?,
val optionalCodes: List<Any?>?,
val codelist: String?,
val codes: List<Any?>?,
val optionalCodeMinAmount: Long?,
val optionalCodeMaxAmount: Long?,
val template: Any?,
val uploadInSpec: Boolean?,
val allowMultipleFiles: Boolean?,
val fileEndings: List<Any?>?,
val specMin: Long?,
val specMax: Long?,
val fromDate: String?,
val toDate: String?,
val multipleSelect: Boolean?,
val fromTime: String?,
val toTime: String?,
val discountValues: List<Any?>?,
val duration: Long?,
val weekdays: List<Any?>?,
val discount: Long?,
)

data class ScoreValue(
val score: Long,
val value: Long,
)

data class DateScore(
val date: Any?,
val score: Long,
)

data class TimeScore(
val time: Any?,
val score: Long,
)

data class Answer(
val point: Long?,
val value: Any?,
val fromDate: Any?,
val toDate: Any?,
val fromTime: Any?,
val toTime: Any?,
val discount: Long?,
val text: String?,
val codes: List<Any?>?,
val files: List<String>?,
)

data class Codelist(
val id: String,
val title: String,
val description: String,
val codes: List<Code>,
val type: String,
val sourceOriginal: String?,
val sourceRel: Any?,
)

data class Code(
val id: String,
val title: String,
val description: String,
val type: String,
val sourceOriginal: String?,
val sourceRel: Any?,
val parent: String?,
)

data class Product(
val id: String,
val title: String,
val description: String,
val type: String,
val parent: String,
val sourceOriginal: String?,
val sourceRel: Any?,
val deletedDate: String?,
val unit: String?,
val requirements: List<Requirement>?,
)

data class Publication(
val id: String,
val bankId: String,
val comment: String,
val date: String,
val type: String,
val version: Long,
val sourceOriginal: Any?,
val sourceRel: Any?,
val deletedDate: String?,
)

data class Tag(
val id: String,
val title: String,
val description: String?,
val type: String,
val parent: String,
val sourceOriginal: String,
val sourceRel: Any?,
)
4 changes: 2 additions & 2 deletions src/main/kotlin/org/kravbank/repository/CodeRepository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ class CodeRepository : BackendRepository<Code>() {
fun findByRef(codelistId: Long, ref: String): Code {
val code =
find(
"ref = ?1 and codelist_id_fk = ?2",
"ref = ?1 and codelist.id = ?2",
ref,
codelistId
).firstResult<Code>()
return Optional.ofNullable(code).orElseThrow { NotFoundException(CODE_NOTFOUND) }
}

fun listAllCodes(id: Long): List<Code> {
return find("codelist_id_fk", id).stream<Code>().toList()
return find("codelist.id", id).stream<Code>().toList()
}

@Throws(BackendException::class)
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/org/kravbank/repository/CodelistRepository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class CodelistRepository : BackendRepository<Codelist>() {
fun findByRef(projectId: Long, ref: String): Codelist {
val codelist =
find(
"ref = ?1 and project_id_fk = ?2",
"ref = ?1 and project.id = ?2",
ref,
projectId
).firstResult<Codelist>()
Expand All @@ -27,7 +27,7 @@ class CodelistRepository : BackendRepository<Codelist>() {

@Throws(BackendException::class)
fun listAllCodelists(id: Long): List<Codelist> {
return find("project_id_fk", id).list()
return find("project.id", id).list()
}

@Throws(BackendException::class)
Expand Down
Loading