aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/traccar/api/resource
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2023-04-04 15:50:58 -0700
committerGitHub <noreply@github.com>2023-04-04 15:50:58 -0700
commit0f092e6aac198bd7244f8011a61bb22ab56174cf (patch)
treeca2b6e70b5c1948ddbe09b0e077000308b1ca836 /src/main/java/org/traccar/api/resource
parent77e98161d8742548ef4082054304bad21f7324ac (diff)
parent9423dad9bc56674dd864897c9c0265ca8cea6670 (diff)
downloadtrackermap-server-0f092e6aac198bd7244f8011a61bb22ab56174cf.tar.gz
trackermap-server-0f092e6aac198bd7244f8011a61bb22ab56174cf.tar.bz2
trackermap-server-0f092e6aac198bd7244f8011a61bb22ab56174cf.zip
Merge pull request #5061 from rovertzxd/feature/delete-positions-endpoint
Add delete API endpoint for Positions
Diffstat (limited to 'src/main/java/org/traccar/api/resource')
-rw-r--r--src/main/java/org/traccar/api/resource/PositionResource.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/org/traccar/api/resource/PositionResource.java b/src/main/java/org/traccar/api/resource/PositionResource.java
index 042dd1e23..37696a620 100644
--- a/src/main/java/org/traccar/api/resource/PositionResource.java
+++ b/src/main/java/org/traccar/api/resource/PositionResource.java
@@ -31,6 +31,7 @@ import org.traccar.storage.query.Request;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
+import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
@@ -43,6 +44,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
+import java.util.LinkedList;
@Path("positions")
@Produces(MediaType.APPLICATION_JSON)
@@ -86,6 +88,21 @@ public class PositionResource extends BaseResource {
}
}
+ @DELETE
+ public Response remove(
+ @QueryParam("deviceId") long deviceId,
+ @QueryParam("from") Date from, @QueryParam("to") Date to) throws StorageException {
+ permissionsService.checkPermission(Device.class, getUserId(), deviceId);
+ permissionsService.checkRestriction(getUserId(), UserRestrictions::getReadonly);
+
+ var conditions = new LinkedList<Condition>();
+ conditions.add(new Condition.Equals("deviceId", deviceId));
+ conditions.add(new Condition.Between("fixTime", "from", from, "to", to));
+ storage.removeObject(Position.class, new Request(Condition.merge(conditions)));
+
+ return Response.status(Response.Status.NO_CONTENT).build();
+ }
+
@Path("kml")
@GET
@Produces("application/vnd.google-earth.kml+xml")