aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorRoberto Murguia <robertmalvarado@gmail.com>2023-04-04 17:14:29 -0500
committerRoberto Murguia <robertmalvarado@gmail.com>2023-04-04 17:45:08 -0500
commit9423dad9bc56674dd864897c9c0265ca8cea6670 (patch)
treea8a99cb19856d3e33d91fcfbfb197eb08204eede /src/main/java/org
parent836fb2221dedae55c3f8457f35294b3753f095c8 (diff)
downloadtrackermap-server-9423dad9bc56674dd864897c9c0265ca8cea6670.tar.gz
trackermap-server-9423dad9bc56674dd864897c9c0265ca8cea6670.tar.bz2
trackermap-server-9423dad9bc56674dd864897c9c0265ca8cea6670.zip
Add DELETE api endpoint for Positions
Diffstat (limited to 'src/main/java/org')
-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")