Skip to content

Commit 25996c5

Browse files
committed
Add solution file management endpoints and update API documentation
- Introduced new endpoints for managing solution files: upload, download, list, and delete operations. - Updated API documentation to reflect the new functionality. - Enabled the use of the local Maven repository in `build.gradle.kts`.
1 parent cbce596 commit 25996c5

File tree

8 files changed

+514
-234
lines changed

8 files changed

+514
-234
lines changed

api/src/main/resources/application.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,15 @@ csm:
162162
- text/plain
163163
- text/x-yaml
164164
- application/json
165+
solutions:
166+
- application/zip
167+
- application/xml
168+
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
169+
- application/x-tika-ooxml
170+
- text/csv
171+
- text/plain
172+
- text/x-yaml
173+
- application/json
165174
datasets:
166175
- application/zip
167176
- application/xml

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ version = scmVersion.version
5656

5757
// Dependencies version
5858
val kotlinJvmTarget = 21
59-
val cosmotechApiCommonVersion = "2.1.1-SNAPSHOT"
59+
val cosmotechApiCommonVersion = "2.1.2-JREY-add_authorizedMimeTypes_for_solutions-SNAPSHOT"
6060
val redisOmSpringVersion = "0.9.7"
6161
val kotlinCoroutinesVersion = "1.10.2"
6262
val oktaSpringBootVersion = "3.0.7"
@@ -125,6 +125,7 @@ allprojects {
125125
configurations { all { resolutionStrategy { force("com.redis.om:redis-om-spring:0.9.10") } } }
126126

127127
repositories {
128+
mavenLocal()
128129
maven {
129130
name = "GitHubPackages"
130131
url = uri("https://maven.pkg.github.com/Cosmo-Tech/cosmotech-api-common")

doc/.openapi-generator/FILES

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ Models/Solution.md
6868
Models/SolutionAccessControl.md
6969
Models/SolutionCreateRequest.md
7070
Models/SolutionEditInfo.md
71+
Models/SolutionFile.md
7172
Models/SolutionRole.md
7273
Models/SolutionSecurity.md
7374
Models/SolutionUpdateRequest.md

doc/Apis/SolutionApi.md

Lines changed: 192 additions & 52 deletions
Large diffs are not rendered by default.

doc/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,21 +66,26 @@ All URIs are relative to *http://localhost:8080*
6666
*RunnerApi* | [**updateRunnerDefaultSecurity**](Apis/RunnerApi.md#updaterunnerdefaultsecurity) | **PATCH** /organizations/{organization_id}/workspaces/{workspace_id}/runners/{runner_id}/security/default | Set the Runner default security |
6767
| *SolutionApi* | [**createSolution**](Apis/SolutionApi.md#createsolution) | **POST** /organizations/{organization_id}/solutions | Create a new solution |
6868
*SolutionApi* | [**createSolutionAccessControl**](Apis/SolutionApi.md#createsolutionaccesscontrol) | **POST** /organizations/{organization_id}/solutions/{solution_id}/security/access | Create solution access control |
69+
*SolutionApi* | [**createSolutionFile**](Apis/SolutionApi.md#createsolutionfile) | **POST** /organizations/{organization_id}/solutions/{solution_id}/files | Upload a file for the Solution |
6970
*SolutionApi* | [**createSolutionParameter**](Apis/SolutionApi.md#createsolutionparameter) | **POST** /organizations/{organization_id}/solutions/{solution_id}/parameters | Create solution parameter for a solution |
7071
*SolutionApi* | [**createSolutionParameterGroup**](Apis/SolutionApi.md#createsolutionparametergroup) | **POST** /organizations/{organization_id}/solutions/{solution_id}/parameterGroups | Create a solution parameter group |
7172
*SolutionApi* | [**createSolutionRunTemplate**](Apis/SolutionApi.md#createsolutionruntemplate) | **POST** /organizations/{organization_id}/solutions/{solution_id}/runTemplates | Create a solution run template |
7273
*SolutionApi* | [**deleteSolution**](Apis/SolutionApi.md#deletesolution) | **DELETE** /organizations/{organization_id}/solutions/{solution_id} | Delete a solution |
7374
*SolutionApi* | [**deleteSolutionAccessControl**](Apis/SolutionApi.md#deletesolutionaccesscontrol) | **DELETE** /organizations/{organization_id}/solutions/{solution_id}/security/access/{identity_id} | Delete solution access control |
75+
*SolutionApi* | [**deleteSolutionFile**](Apis/SolutionApi.md#deletesolutionfile) | **DELETE** /organizations/{organization_id}/solutions/{solution_id}/files/delete | Delete a solution file |
76+
*SolutionApi* | [**deleteSolutionFiles**](Apis/SolutionApi.md#deletesolutionfiles) | **DELETE** /organizations/{organization_id}/solutions/{solution_id}/files | Delete all Solution files |
7477
*SolutionApi* | [**deleteSolutionParameter**](Apis/SolutionApi.md#deletesolutionparameter) | **DELETE** /organizations/{organization_id}/solutions/{solution_id}/parameters/{parameter_id} | Delete specific parameter from the solution |
7578
*SolutionApi* | [**deleteSolutionParameterGroup**](Apis/SolutionApi.md#deletesolutionparametergroup) | **DELETE** /organizations/{organization_id}/solutions/{solution_id}/parameterGroups/{parameter_group_id} | Delete a parameter group from the solution |
7679
*SolutionApi* | [**deleteSolutionRunTemplate**](Apis/SolutionApi.md#deletesolutionruntemplate) | **DELETE** /organizations/{organization_id}/solutions/{solution_id}/runTemplates/{run_template_id} | Delete a specific run template |
7780
*SolutionApi* | [**getRunTemplate**](Apis/SolutionApi.md#getruntemplate) | **GET** /organizations/{organization_id}/solutions/{solution_id}/runTemplates/{run_template_id} | Retrieve a solution run templates |
7881
*SolutionApi* | [**getSolution**](Apis/SolutionApi.md#getsolution) | **GET** /organizations/{organization_id}/solutions/{solution_id} | Get the details of a solution |
7982
*SolutionApi* | [**getSolutionAccessControl**](Apis/SolutionApi.md#getsolutionaccesscontrol) | **GET** /organizations/{organization_id}/solutions/{solution_id}/security/access/{identity_id} | Get solution access control |
83+
*SolutionApi* | [**getSolutionFile**](Apis/SolutionApi.md#getsolutionfile) | **GET** /organizations/{organization_id}/solutions/{solution_id}/files/download | Download the Solution File specified |
8084
*SolutionApi* | [**getSolutionParameter**](Apis/SolutionApi.md#getsolutionparameter) | **GET** /organizations/{organization_id}/solutions/{solution_id}/parameters/{parameter_id} | Get the details of a solution parameter |
8185
*SolutionApi* | [**getSolutionParameterGroup**](Apis/SolutionApi.md#getsolutionparametergroup) | **GET** /organizations/{organization_id}/solutions/{solution_id}/parameterGroups/{parameter_group_id} | Get details of a solution parameter group |
8286
*SolutionApi* | [**getSolutionSecurity**](Apis/SolutionApi.md#getsolutionsecurity) | **GET** /organizations/{organization_id}/solutions/{solution_id}/security | Get solution security information |
8387
*SolutionApi* | [**listRunTemplates**](Apis/SolutionApi.md#listruntemplates) | **GET** /organizations/{organization_id}/solutions/{solution_id}/runTemplates | List all solution run templates |
88+
*SolutionApi* | [**listSolutionFiles**](Apis/SolutionApi.md#listsolutionfiles) | **GET** /organizations/{organization_id}/solutions/{solution_id}/files | List all Solution files |
8489
*SolutionApi* | [**listSolutionParameterGroups**](Apis/SolutionApi.md#listsolutionparametergroups) | **GET** /organizations/{organization_id}/solutions/{solution_id}/parameterGroups | List all solution parameter groups |
8590
*SolutionApi* | [**listSolutionParameters**](Apis/SolutionApi.md#listsolutionparameters) | **GET** /organizations/{organization_id}/solutions/{solution_id}/parameters | List all solution parameters |
8691
*SolutionApi* | [**listSolutionSecurityUsers**](Apis/SolutionApi.md#listsolutionsecurityusers) | **GET** /organizations/{organization_id}/solutions/{solution_id}/security/users | List solution security users |
@@ -177,6 +182,7 @@ All URIs are relative to *http://localhost:8080*
177182
- [SolutionAccessControl](./Models/SolutionAccessControl.md)
178183
- [SolutionCreateRequest](./Models/SolutionCreateRequest.md)
179184
- [SolutionEditInfo](./Models/SolutionEditInfo.md)
185+
- [SolutionFile](./Models/SolutionFile.md)
180186
- [SolutionRole](./Models/SolutionRole.md)
181187
- [SolutionSecurity](./Models/SolutionSecurity.md)
182188
- [SolutionUpdateRequest](./Models/SolutionUpdateRequest.md)

openapi/plantuml/schemas.plantuml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,10 @@ entity SolutionEditInfo {
508508
* userId: String
509509
}
510510

511+
entity SolutionFile {
512+
* fileName: String
513+
}
514+
511515
entity SolutionRole {
512516
* role: String
513517
}

solution/src/main/kotlin/com/cosmotech/solution/service/SolutionServiceImpl.kt

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,22 @@ import com.cosmotech.solution.domain.Solution
3636
import com.cosmotech.solution.domain.SolutionAccessControl
3737
import com.cosmotech.solution.domain.SolutionCreateRequest
3838
import com.cosmotech.solution.domain.SolutionEditInfo
39+
import com.cosmotech.solution.domain.SolutionFile
3940
import com.cosmotech.solution.domain.SolutionRole
4041
import com.cosmotech.solution.domain.SolutionSecurity
4142
import com.cosmotech.solution.domain.SolutionUpdateRequest
4243
import com.cosmotech.solution.repository.SolutionRepository
4344
import java.time.Instant
4445
import kotlin.collections.mutableListOf
4546
import org.springframework.context.event.EventListener
47+
import org.springframework.core.io.Resource
4648
import org.springframework.data.domain.Pageable
4749
import org.springframework.scheduling.annotation.Async
4850
import org.springframework.stereotype.Service
51+
import org.springframework.web.multipart.MultipartFile
4952

5053
@Service
51-
@Suppress("TooManyFunctions")
54+
@Suppress("TooManyFunctions", "LargeClass")
5255
class SolutionServiceImpl(
5356
private val solutionRepository: SolutionRepository,
5457
private val organizationApiService: OrganizationApiServiceInterface,
@@ -175,6 +178,10 @@ class SolutionServiceImpl(
175178
return existingSolution.runTemplates
176179
}
177180

181+
override fun listSolutionFiles(organizationId: String, solutionId: String): List<SolutionFile> {
182+
TODO("Not yet implemented")
183+
}
184+
178185
override fun createSolutionRunTemplate(
179186
organizationId: String,
180187
solutionId: String,
@@ -369,6 +376,16 @@ class SolutionServiceImpl(
369376
return SolutionAccessControl(rbacAccessControl.id, rbacAccessControl.role)
370377
}
371378

379+
override fun createSolutionFile(
380+
organizationId: String,
381+
solutionId: String,
382+
file: MultipartFile,
383+
overwrite: Boolean,
384+
destination: String?
385+
): SolutionFile {
386+
TODO("Not yet implemented")
387+
}
388+
372389
override fun listSolutionParameterGroups(
373390
organizationId: String,
374391
solutionId: String
@@ -464,6 +481,14 @@ class SolutionServiceImpl(
464481
return SolutionAccessControl(rbacAccessControl.id, rbacAccessControl.role)
465482
}
466483

484+
override fun getSolutionFile(
485+
organizationId: String,
486+
solutionId: String,
487+
fileName: String
488+
): Resource {
489+
TODO("Not yet implemented")
490+
}
491+
467492
override fun createSolutionParameter(
468493
organizationId: String,
469494
solutionId: String,
@@ -579,6 +604,14 @@ class SolutionServiceImpl(
579604
save(solution)
580605
}
581606

607+
override fun deleteSolutionFile(organizationId: String, solutionId: String, fileName: String) {
608+
TODO("Not yet implemented")
609+
}
610+
611+
override fun deleteSolutionFiles(organizationId: String, solutionId: String) {
612+
TODO("Not yet implemented")
613+
}
614+
582615
override fun listSolutionSecurityUsers(organizationId: String, solutionId: String): List<String> {
583616
val solution = getVerifiedSolution(organizationId, solutionId, PERMISSION_READ_SECURITY)
584617
return csmRbac.getUsers(solution.security.toGenericSecurity(solutionId))

0 commit comments

Comments
 (0)