diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2023-04-04 15:50:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-04 15:50:58 -0700 |
commit | 0f092e6aac198bd7244f8011a61bb22ab56174cf (patch) | |
tree | ca2b6e70b5c1948ddbe09b0e077000308b1ca836 /src/main/java/org | |
parent | 77e98161d8742548ef4082054304bad21f7324ac (diff) | |
parent | 9423dad9bc56674dd864897c9c0265ca8cea6670 (diff) | |
download | trackermap-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')
-rw-r--r-- | src/main/java/org/traccar/api/resource/PositionResource.java | 17 |
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") |