This is an automated email from the ASF dual-hosted git repository.
riemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to refs/heads/dev by this push:
new a98d00a3e9 feat: Support deletion in typescript dataset api (#4125)
a98d00a3e9 is described below
commit a98d00a3e990b1c834696da1b4251cab0e2b9113
Author: Dominik Riemer <[email protected]>
AuthorDate: Fri Jan 23 10:15:17 2026 +0100
feat: Support deletion in typescript dataset api (#4125)
Co-authored-by: Philipp Zehnder <[email protected]>
---
.../streampipes/rest/impl/datalake/DataLakeResource.java | 10 +++++-----
.../src/lib/apis/datalake-rest.service.ts | 14 ++++++++++++++
2 files changed, 19 insertions(+), 5 deletions(-)
diff --git
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResource.java
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResource.java
index 5332a92bbb..51d2ea14be 100644
---
a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResource.java
+++
b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/datalake/DataLakeResource.java
@@ -106,20 +106,20 @@ public class DataLakeResource extends
AbstractDataLakeResource {
this.dataExplorerQueryManagement = dataExplorerQueryManagement;
}
- @DeleteMapping(path = "/measurements/{measurementID}")
- @PreAuthorize("this.hasWriteAuthority() and
this.checkPermissionByName(#measurementID, 'WRITE')")
+ @DeleteMapping(path = "/measurements/{measurementName}")
+ @PreAuthorize("this.hasWriteAuthority() and
this.checkPermissionByName(#measurementName, 'WRITE')")
@Operation(summary = "Remove data from a single measurement series with
given id", tags = {
"Data Lake" }, responses = {
@ApiResponse(responseCode = "200", description = "Data from
measurement series successfully removed"),
@ApiResponse(responseCode = "400", description = "Measurement series
with given id not found") })
public ResponseEntity<?> deleteData(
- @Parameter(in = ParameterIn.PATH, description = "the id of the
measurement series", required = true) @PathVariable("measurementID") String
measurementID,
+ @Parameter(in = ParameterIn.PATH, description = "the name of the
measurement series", required = true) @PathVariable("measurementName") String
measurementName,
@Parameter(in = ParameterIn.QUERY, description = "start date for slicing
operation") @RequestParam(value = "startDate", required = false) Long startDate,
@Parameter(in = ParameterIn.QUERY, description = "end date for slicing
operation") @RequestParam(value = "endDate", required = false) Long endDate) {
- if (this.dataExplorerQueryManagement.deleteData(measurementID, startDate,
endDate)) {
+ if (this.dataExplorerQueryManagement.deleteData(measurementName,
startDate, endDate)) {
return ok(Notifications
- .success("Successfully deleted measure " + measurementID + " between
" + startDate + " and " + endDate));
+ .success("Successfully deleted measure " + measurementName + "
between " + startDate + " and " + endDate));
} else {
return ResponseEntity
.status(HttpStatus.NOT_FOUND)
diff --git
a/ui/projects/streampipes/platform-services/src/lib/apis/datalake-rest.service.ts
b/ui/projects/streampipes/platform-services/src/lib/apis/datalake-rest.service.ts
index 0b89eecce9..c7f8aeec7a 100644
---
a/ui/projects/streampipes/platform-services/src/lib/apis/datalake-rest.service.ts
+++
b/ui/projects/streampipes/platform-services/src/lib/apis/datalake-rest.service.ts
@@ -174,6 +174,20 @@ export class DatalakeRestService {
return this.http.request(request);
}
+ deleteData(
+ measurementName: string,
+ startTime: number,
+ endTime: number,
+ ): Observable<void> {
+ const params = new HttpParams()
+ .set('startDate', startTime.toString())
+ .set('endDate', endTime.toString());
+ return this.http.delete<void>(
+ `${this.dataLakeUrl}/measurements/${measurementName}`,
+ { params },
+ );
+ }
+
deleteCleanup(index: string) {
const url = `${this.dataLakeUrl}/${index}/cleanup`;
return this.http.delete(url);