Skip to content

Commit

Permalink
feat(backend): introduce release_at timestamp, adapt config
Browse files Browse the repository at this point in the history
  • Loading branch information
TobiasKampmann committed Jan 10, 2024
1 parent 8eb6756 commit f96634d
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class ReleasedDataModel(private val databaseService: DatabaseService) {
("isRevocation" to TextNode(rawProcessedData.isRevocation.toString())) +
("submitter" to TextNode(rawProcessedData.submitter)) +
("submittedAt" to TextNode(rawProcessedData.submittedAt.toString())) +
("releasedAt" to TextNode(rawProcessedData.releasedAt.toString())) +
("versionStatus" to TextNode(siloVersionStatus.name))

return ProcessedData(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,8 @@ class DatabaseService(
fun approveProcessedData(submitter: String, accessionVersions: List<AccessionVersion>, organism: Organism) {
log.info { "approving ${accessionVersions.size} sequences by $submitter" }

val now = Clock.System.now().toLocalDateTime(TimeZone.UTC)

submissionPreconditionValidator.validateAccessionVersions(
submitter,
accessionVersions,
Expand All @@ -252,6 +254,7 @@ class DatabaseService(
},
) {
it[statusColumn] = APPROVED_FOR_RELEASE.name
it[releasedAtColumn] = now
}
}
}
Expand Down Expand Up @@ -295,6 +298,7 @@ class DatabaseService(
table.processedDataColumn,
table.submitterColumn,
table.submittedAtColumn,
table.releasedAtColumn,
table.submissionIdColumn,
)
.select(
Expand All @@ -311,6 +315,7 @@ class DatabaseService(
submissionId = it[table.submissionIdColumn],
processedData = it[table.processedDataColumn]!!,
submittedAt = it[table.submittedAtColumn],
releasedAt = it[table.releasedAtColumn]!!,
)
}
.asSequence()
Expand Down Expand Up @@ -594,6 +599,7 @@ data class RawProcessedData(
val isRevocation: Boolean,
val submitter: String,
val submittedAt: LocalDateTime,
val releasedAt: LocalDateTime,
val submissionId: String,
val processedData: ProcessedData,
) : AccessionVersionInterface
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ class SequenceEntriesDataTable(
val submittedAtColumn = datetime("submitted_at")
val startedProcessingAtColumn = datetime("started_processing_at").nullable()
val finishedProcessingAtColumn = datetime("finished_processing_at").nullable()
val releasedAtColumn = datetime("released_at").nullable()
val statusColumn = varchar("status", 255)
val isRevocationColumn = bool("is_revocation").default(false)
val errorsColumn = jacksonSerializableJsonb<List<PreprocessingAnnotation>>("errors").nullable()
Expand Down
1 change: 1 addition & 0 deletions backend/src/main/resources/db/migration/V1__init.sql
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ create table sequence_entries (
submitted_at timestamp not null,
started_processing_at timestamp,
finished_processing_at timestamp,
released_at timestamp,
status text not null,
is_revocation boolean not null default false,
original_data jsonb,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

private const val NUMBER_OF_FIELDS_WITH_UNKNOWN_VALUE = 2
private val ADDED_FIELDS_WITH_UNKNOWN_VALUES_FOR_RELEASE = listOf("releasedAt", "submissionId", "submittedAt")

@EndpointTest
class GetReleasedDataEndpointTest(
Expand Down Expand Up @@ -82,14 +82,22 @@ class GetReleasedDataEndpointTest(
"versionStatus" to TextNode("LATEST_VERSION"),
)

assertThat(it.metadata.size, `is`(expectedMetadata.size + NUMBER_OF_FIELDS_WITH_UNKNOWN_VALUE))
assertThat(
it.metadata.size,
`is`(expectedMetadata.size + ADDED_FIELDS_WITH_UNKNOWN_VALUES_FOR_RELEASE.size),
)
for ((key, value) in it.metadata) {
when (key) {
"submittedAt" -> {
val dateTime = LocalDateTime.parse(value.textValue(), DateTimeFormatter.ISO_LOCAL_DATE_TIME)
assertThat(dateTime.year, `is`(currentYear))
}

"releasedAt" -> {
val dateTime = LocalDateTime.parse(value.textValue(), DateTimeFormatter.ISO_LOCAL_DATE_TIME)
assertThat(dateTime.year, `is`(currentYear))
}

"submissionId" -> assertThat(value.textValue(), matchesPattern("^custom\\d$"))
else -> assertThat(value, `is`(expectedMetadata[key]))
}
Expand Down
4 changes: 3 additions & 1 deletion kubernetes/loculus/templates/_common-metadata.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ fields:
type: string
- name: submittedAt
type: string
- name: releasedAt
type: string
- name: versionStatus
type: string
notSearchable: true
Expand Down Expand Up @@ -69,7 +71,7 @@ instances:
{{- with $instance.schema }}
instanceName: {{ .instanceName }}
metadata:
{{ $metadata := include "loculus.generateWebsiteMetadata" .metadata | fromYaml }}
{{ $metadata := include "loculus.generateBackendMetadata" .metadata | fromYaml }}
{{ $metadata.fields | toYaml | nindent 8 }}
{{- end }}
referenceGenomes:
Expand Down

0 comments on commit f96634d

Please sign in to comment.