Skip to content

Commit f7ccee7

Browse files
committed
Moving data to document instead of version.
1 parent 7441ca9 commit f7ccee7

File tree

7 files changed

+97
-93
lines changed

7 files changed

+97
-93
lines changed

src/main/kotlin/no/nav/klage/document/api/DocumentController.kt

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import no.nav.klage.document.api.views.DocumentUpdateInput
66
import no.nav.klage.document.api.views.DocumentVersionView
77
import no.nav.klage.document.api.views.DocumentView
88
import no.nav.klage.document.config.SecurityConfiguration.Companion.ISSUER_AAD
9-
import no.nav.klage.document.domain.DocumentVersion
10-
import no.nav.klage.document.domain.ShortDocumentVersion
119
import no.nav.klage.document.service.DocumentService
1210
import no.nav.klage.document.util.TokenUtil
1311
import no.nav.klage.document.util.getLogger
@@ -41,7 +39,7 @@ class DocumentController(
4139
): DocumentView {
4240
log("createDocument")
4341
secureLogger.debug("createDocument: received json: {}", input.json)
44-
return mapToDocumentView(documentService.createDocument(json = input.json, data = input.data))
42+
return documentService.createDocument(json = input.json, data = input.data)
4543
}
4644

4745
@Operation(
@@ -62,24 +60,20 @@ class DocumentController(
6260
)
6361

6462
return try {
65-
mapToDocumentView(
66-
documentService.updateDocument(
67-
documentId = documentId,
68-
json = input.json,
69-
data = input.data,
70-
currentVersion = input.currentVersion,
71-
)
63+
documentService.updateDocument(
64+
documentId = documentId,
65+
json = input.json,
66+
data = input.data,
67+
currentVersion = input.currentVersion,
7268
)
69+
7370
} catch (e: Exception) {
7471
logger.warn("Failed to update document $documentId. Trying one more time.", e)
75-
76-
mapToDocumentView(
77-
documentService.updateDocument(
78-
documentId = documentId,
79-
json = input.json,
80-
data = input.data,
81-
currentVersion = input.currentVersion,
82-
)
72+
documentService.updateDocument(
73+
documentId = documentId,
74+
json = input.json,
75+
data = input.data,
76+
currentVersion = input.currentVersion,
8377
)
8478
}
8579
}
@@ -94,7 +88,7 @@ class DocumentController(
9488
@PathVariable("version", required = false) version: Int?,
9589
): DocumentView {
9690
log("getDocument called with id $documentId and version $version")
97-
return mapToDocumentView(documentService.getDocument(documentId = documentId, version = version))
91+
return documentService.getDocument(documentId = documentId, version = version)
9892
}
9993

10094
@Operation(
@@ -114,34 +108,9 @@ class DocumentController(
114108
@GetMapping("/{documentId}/versions")
115109
fun getDocumentVersions(@PathVariable("documentId") documentId: UUID): List<DocumentVersionView> {
116110
log("getDocumentVersions called with id $documentId")
117-
val documentVersions = documentService.getDocumentVersions(documentId = documentId)
118-
119-
return documentVersions.map {
120-
mapToDocumentVersionView(it)
121-
}
111+
return documentService.getDocumentVersions(documentId = documentId)
122112
}
123113

124-
private fun mapToDocumentView(documentVersion: DocumentVersion): DocumentView =
125-
DocumentView(
126-
id = documentVersion.documentId,
127-
documentId = documentVersion.documentId,
128-
version = documentVersion.version,
129-
json = documentVersion.json,
130-
data = documentVersion.data,
131-
authorNavIdent = documentVersion.authorNavIdent,
132-
created = documentVersion.created,
133-
modified = documentVersion.modified
134-
)
135-
136-
private fun mapToDocumentVersionView(documentVersion: ShortDocumentVersion): DocumentVersionView =
137-
DocumentVersionView(
138-
documentId = documentVersion.documentId,
139-
version = documentVersion.version,
140-
authorNavIdent = documentVersion.authorNavIdent,
141-
created = documentVersion.created,
142-
modified = documentVersion.modified
143-
)
144-
145114
private fun log(message: String) {
146115
logger.debug(message)
147116
secureLogger.debug("{}. On-behalf-of: {}", message, tokenUtil.getIdentNullable())

src/main/kotlin/no/nav/klage/document/domain/Document.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import java.util.*
1212
class Document(
1313
@Id
1414
val id: UUID = UUID.randomUUID(),
15+
@Column(name = "data")
16+
var data: String?,
1517
@Column(name = "created")
1618
val created: LocalDateTime,
1719
@Column(name = "modified")
@@ -23,9 +25,7 @@ class Document(
2325

2426
other as Document
2527

26-
if (id != other.id) return false
27-
28-
return true
28+
return id == other.id
2929
}
3030

3131
override fun hashCode(): Int {

src/main/kotlin/no/nav/klage/document/domain/DocumentVersion.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ class DocumentVersion(
1414
val version: Int,
1515
@Column(name = "json")
1616
var json: String,
17-
@Column(name = "data")
18-
var data: String?,
1917
@Column(name = "created")
2018
val created: LocalDateTime,
2119
@Column(name = "modified")
@@ -40,7 +38,7 @@ class DocumentVersion(
4038
}
4139

4240
override fun toString(): String {
43-
return "DocumentVersion(documentId=$documentId, version=$version, json='$json', data=$data, created=$created, modified=$modified, authorNavIdent='$authorNavIdent')"
41+
return "DocumentVersion(documentId=$documentId, version=$version, json='$json', created=$created, modified=$modified, authorNavIdent='$authorNavIdent')"
4442
}
4543

4644
}

src/main/kotlin/no/nav/klage/document/service/DocumentService.kt

Lines changed: 62 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package no.nav.klage.document.service
22

3+
import no.nav.klage.document.api.views.DocumentVersionView
4+
import no.nav.klage.document.api.views.DocumentView
35
import no.nav.klage.document.domain.Document
46
import no.nav.klage.document.domain.DocumentVersion
57
import no.nav.klage.document.domain.DocumentVersionId
@@ -32,30 +34,33 @@ class DocumentService(
3234
private val secureLogger = getSecureLogger()
3335
}
3436

35-
fun createDocument(json: String, data: String?): DocumentVersion {
37+
fun createDocument(json: String, data: String?): DocumentView {
3638
val now = LocalDateTime.now()
3739

3840
val document = documentRepository.save(
3941
Document(
42+
data = data,
4043
created = now,
4144
modified = now,
4245
)
4346
)
4447

45-
return documentVersionRepository.save(
46-
DocumentVersion(
47-
documentId = document.id,
48-
version = 1,
49-
json = json,
50-
data = data,
51-
authorNavIdent = tokenUtil.getIdent(),
52-
created = now,
53-
modified = now,
54-
)
48+
return mapToDocumentView(
49+
documentVersionRepository.save(
50+
DocumentVersion(
51+
documentId = document.id,
52+
version = 1,
53+
json = json,
54+
authorNavIdent = tokenUtil.getIdent(),
55+
created = now,
56+
modified = now,
57+
)
58+
),
59+
document = document
5560
)
5661
}
5762

58-
fun updateDocument(documentId: UUID, json: String, data: String?, currentVersion: Int?): DocumentVersion {
63+
fun updateDocument(documentId: UUID, json: String, data: String?, currentVersion: Int?): DocumentView {
5964
val now = LocalDateTime.now()
6065
val latestVersionNumber = latestDocumentRepository.findById(documentId).get().currentVersion
6166

@@ -84,27 +89,32 @@ class DocumentService(
8489
version = latestVersionNumber
8590
)
8691
).get()
87-
return documentVersionRepository.save(
88-
DocumentVersion(
89-
documentId = documentVersion.documentId,
90-
version = latestVersionNumber + 1,
91-
json = json,
92-
data = data,
93-
created = now,
94-
modified = now,
95-
authorNavIdent = tokenUtil.getIdent()
96-
)
92+
return mapToDocumentView(
93+
documentVersion = documentVersionRepository.save(
94+
DocumentVersion(
95+
documentId = documentVersion.documentId,
96+
version = latestVersionNumber + 1,
97+
json = json,
98+
created = now,
99+
modified = now,
100+
authorNavIdent = tokenUtil.getIdent()
101+
)
102+
),
103+
document = documentRepository.findById(documentId).get()
97104
)
98105
}
99106

100-
fun getDocument(documentId: UUID, version: Int?): DocumentVersion {
107+
fun getDocument(documentId: UUID, version: Int?): DocumentView {
101108
val versionToUse = version ?: latestDocumentRepository.findById(documentId).get().currentVersion
102-
return documentVersionRepository.findById(
103-
DocumentVersionId(
104-
documentId = documentId,
105-
version = versionToUse
106-
)
107-
).get()
109+
return mapToDocumentView(
110+
documentVersion = documentVersionRepository.findById(
111+
DocumentVersionId(
112+
documentId = documentId,
113+
version = versionToUse
114+
)
115+
).get(),
116+
document = documentRepository.findById(documentId).get()
117+
)
108118
}
109119

110120
fun deleteDocument(documentId: UUID) {
@@ -114,8 +124,30 @@ class DocumentService(
114124
documentRepository.deleteById(documentId)
115125
}
116126

117-
fun getDocumentVersions(documentId: UUID): List<ShortDocumentVersion> {
127+
fun getDocumentVersions(documentId: UUID): List<DocumentVersionView> {
118128
return documentVersionRepository.findVersionsByDocumentId(documentId = documentId)
129+
.map { mapToDocumentVersionView(it) }
119130
}
120131

132+
private fun mapToDocumentView(documentVersion: DocumentVersion, document: Document): DocumentView =
133+
DocumentView(
134+
id = documentVersion.documentId,
135+
documentId = documentVersion.documentId,
136+
version = documentVersion.version,
137+
json = documentVersion.json,
138+
data = document.data,
139+
authorNavIdent = documentVersion.authorNavIdent,
140+
created = documentVersion.created,
141+
modified = documentVersion.modified
142+
)
143+
144+
private fun mapToDocumentVersionView(documentVersion: ShortDocumentVersion): DocumentVersionView =
145+
DocumentVersionView(
146+
documentId = documentVersion.documentId,
147+
version = documentVersion.version,
148+
authorNavIdent = documentVersion.authorNavIdent,
149+
created = documentVersion.created,
150+
modified = documentVersion.modified
151+
)
152+
121153
}

src/main/resources/application.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,25 @@ spring:
77
throw-exception-if-no-handler-found: true
88
lifecycle:
99
timeout-per-shutdown-phase: 20s
10-
servlet:
11-
multipart:
12-
max-request-size: 8MB
13-
max-file-size: 8MB
1410
codec:
15-
max-in-memory-size: 16MB
11+
max-in-memory-size: 32MB
1612
datasource:
1713
url: jdbc:postgresql://${NAIS_DATABASE_KABAL_SMART_EDITOR_API_KABAL_SMART_EDITOR_API_HOST}:${NAIS_DATABASE_KABAL_SMART_EDITOR_API_KABAL_SMART_EDITOR_API_PORT}/${NAIS_DATABASE_KABAL_SMART_EDITOR_API_KABAL_SMART_EDITOR_API_DATABASE}
1814
username: ${NAIS_DATABASE_KABAL_SMART_EDITOR_API_KABAL_SMART_EDITOR_API_USERNAME}
1915
password: ${NAIS_DATABASE_KABAL_SMART_EDITOR_API_KABAL_SMART_EDITOR_API_PASSWORD}
2016
driver-class-name: org.postgresql.Driver
2117
flyway:
2218
enabled: true
23-
clean-on-validation-error: true
19+
clean-on-validation-error: false
2420
schemas: flyway_history_schema,klage
2521
sql:
2622
init:
2723
platform: postgresql
2824
web:
2925
resources:
3026
add-mappings: false
27+
jpa:
28+
open-in-view: false
3129

3230
server:
3331
port: 7095
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
ALTER TABLE klage.document_version
2+
DROP COLUMN data
3+
;
4+
5+
ALTER TABLE klage.document
6+
ADD COLUMN data TEXT
7+
;

0 commit comments

Comments
 (0)