Skip to content

Commit 21ad8d7

Browse files
feat: add sourceName to updatable data in datasetPart PUT endpoint
1 parent 3d3bce0 commit 21ad8d7

File tree

6 files changed

+33
-11
lines changed

6 files changed

+33
-11
lines changed

api/src/integrationTest/kotlin/com/cosmotech/api/home/dataset/DatasetControllerTests.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,7 @@ class DatasetControllerTests : ControllerTestBase() {
682682
createDatasetPartAndReturnId(
683683
mvc, organizationId, workspaceId, datasetId, constructDatasetPartCreateRequest())
684684

685+
val newSourceName = "source_name_updated.csv"
685686
val newDescription = "this_a_new_description_for_dataset_part"
686687
val newTags = mutableListOf("tag_part1_updated", "tag_part2_updated")
687688

@@ -690,7 +691,9 @@ class DatasetControllerTests : ControllerTestBase() {
690691
"datasetPartUpdateRequest",
691692
null,
692693
MediaType.APPLICATION_JSON_VALUE,
693-
JSONObject(DatasetPartUpdateRequest(description = newDescription, tags = newTags))
694+
JSONObject(
695+
DatasetPartUpdateRequest(
696+
sourceName = newSourceName, description = newDescription, tags = newTags))
694697
.toString()
695698
.byteInputStream())
696699
val newFile =
@@ -715,7 +718,7 @@ class DatasetControllerTests : ControllerTestBase() {
715718
.andDo(MockMvcResultHandlers.print())
716719
.andExpect(jsonPath("$.id").value(datasetPartId))
717720
.andExpect(jsonPath("$.name").value(DATASET_PART_NAME))
718-
.andExpect(jsonPath("$.sourceName").value(TEST_FILE_NAME))
721+
.andExpect(jsonPath("$.sourceName").value(newSourceName))
719722
.andExpect(jsonPath("$.description").value(newDescription))
720723
.andExpect(jsonPath("$.createInfo.userId").value(PLATFORM_ADMIN_EMAIL))
721724
.andExpect(jsonPath("$.createInfo.timestamp").isNumber)

dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1932,10 +1932,12 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
19321932
assertEquals(DatasetPartTypeEnum.File, datasetPartToReplace.type)
19331933

19341934
// New Part to replace the existing one in the dataset
1935+
val newDatasetSourceName = "updatedResourceFile.csv"
19351936
val newDatasetPartDescription = "New Data for customer list"
19361937
val newDatasetPartTags = mutableListOf("part", "public", "new", "customer")
19371938
val datasetPartUpdateRequest =
19381939
DatasetPartUpdateRequest(
1940+
sourceName = newDatasetSourceName,
19391941
description = newDatasetPartDescription,
19401942
tags = newDatasetPartTags,
19411943
)
@@ -1967,9 +1969,10 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
19671969

19681970
assertEquals(datasetPartToReplace.id, replacedDatasetPart.id)
19691971
assertEquals(datasetPartToReplace.name, replacedDatasetPart.name)
1972+
assertEquals(replacedDatasetPart.sourceName, newDatasetSourceName)
19701973
assertEquals(replacedDatasetPart.description, newDatasetPartDescription)
19711974
assertEquals(replacedDatasetPart.tags, newDatasetPartTags)
1972-
assertEquals(CUSTOMER_SOURCE_FILE_NAME, replacedDatasetPart.sourceName)
1975+
assertEquals("updatedResourceFile.csv", replacedDatasetPart.sourceName)
19731976
assertEquals(DatasetPartTypeEnum.File, replacedDatasetPart.type)
19741977

19751978
val newDatasetPartFilePath = constructFilePathForDatasetPart(datasetWithReplacedPart, 0)
@@ -2029,7 +2032,9 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
20292032
// Create a DatasetUpdateRequest with new dataset part
20302033
val datasetPartUpdateRequest =
20312034
DatasetPartUpdateRequest(
2032-
description = "Dataset for shop", tags = mutableListOf("dataset", "public", "shop"))
2035+
sourceName = "updatedResourceFile.csv",
2036+
description = "Dataset for shop",
2037+
tags = mutableListOf("dataset", "public", "shop"))
20332038

20342039
val wrongTypeTestFile =
20352040
resourceLoader.getResource("classpath:/$UNALLOWED_MIME_TYPE_SOURCE_FILE_NAME").file
@@ -2099,7 +2104,9 @@ class DatasetServiceIntegrationTest() : CsmTestBase() {
20992104

21002105
val datasetPartUpdateRequest =
21012106
DatasetPartUpdateRequest(
2102-
description = "Dataset for shop", tags = mutableListOf("dataset", "public", "shop"))
2107+
sourceName = "updatedResourceFile.csv",
2108+
description = "Dataset for shop",
2109+
tags = mutableListOf("dataset", "public", "shop"))
21032110

21042111
val wrongTypeMockMultipartFile =
21052112
MockMultipartFile(

dataset/src/main/kotlin/com/cosmotech/dataset/service/DatasetServiceImpl.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -568,21 +568,26 @@ class DatasetServiceImpl(
568568
val now = Instant.now().toEpochMilli()
569569
val userId = getCurrentAccountIdentifier(csmPlatformProperties)
570570
val editInfo = EditInfo(timestamp = now, userId = userId)
571-
571+
val datasetPartUpdated = datasetPart.copy()
572572
dataset.parts
573573
.find { it.id == datasetPartId }
574574
?.let {
575+
it.sourceName = datasetPartUpdateRequest?.sourceName ?: it.sourceName
575576
it.description = datasetPartUpdateRequest?.description ?: it.description
576577
it.tags = datasetPartUpdateRequest?.tags ?: it.tags
577578
it.updateInfo = editInfo
578579

579-
datasetPart.description = datasetPartUpdateRequest?.description ?: datasetPart.description
580-
datasetPart.tags = datasetPartUpdateRequest?.tags ?: datasetPart.tags
581-
datasetPart.updateInfo = editInfo
580+
datasetPartUpdated.sourceName =
581+
datasetPartUpdateRequest?.sourceName ?: datasetPart.sourceName
582+
datasetPartUpdated.description =
583+
datasetPartUpdateRequest?.description ?: datasetPart.description
584+
datasetPartUpdated.tags = datasetPartUpdateRequest?.tags ?: datasetPart.tags
585+
datasetPartUpdated.updateInfo = editInfo
582586
}
583-
datasetPartManagementFactory.storeData(datasetPart, file, true)
587+
datasetPartManagementFactory.removeData(datasetPart)
588+
datasetPartManagementFactory.storeData(datasetPartUpdated, file, true)
584589
datasetRepository.update(dataset)
585-
return datasetPartRepository.update(datasetPart)
590+
return datasetPartRepository.update(datasetPartUpdated)
586591
}
587592

588593
override fun searchDatasetParts(

dataset/src/main/openapi/dataset.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,11 @@ components:
877877
type: object
878878
description: Dataset part update request object
879879
properties:
880+
sourceName:
881+
description: the source data name (e.g. filename associated to the dataset part)
882+
type: string
883+
minLength: 1
884+
maxLength: 50
880885
description:
881886
type: string
882887
tags:

doc/Models/DatasetPartUpdateRequest.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
| Name | Type | Description | Notes |
55
|------------ | ------------- | ------------- | -------------|
6+
| **sourceName** | **String** | the source data name (e.g. filename associated to the dataset part) | [optional] [default to null] |
67
| **description** | **String** | | [optional] [default to null] |
78
| **tags** | **List** | | [optional] [default to null] |
89

openapi/plantuml/schemas.plantuml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ entity DatasetPartTypeEnum {
9494
}
9595

9696
entity DatasetPartUpdateRequest {
97+
sourceName: String
9798
description: String
9899
tags: List<String>
99100
}

0 commit comments

Comments
 (0)