From ff1afd7c32f1a26d1bb4ac4c7bbf705c3364f936 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Sun, 14 Jun 2020 16:11:13 +0200 Subject: [PATCH 1/2] Don't show future entries on /today endpoint --- .../java/de/hft/geotime/repositories/RecordRepository.java | 6 +++++- backend/src/main/resources/data.sql | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/de/hft/geotime/repositories/RecordRepository.java b/backend/src/main/java/de/hft/geotime/repositories/RecordRepository.java index fb715ff..04cb836 100644 --- a/backend/src/main/java/de/hft/geotime/repositories/RecordRepository.java +++ b/backend/src/main/java/de/hft/geotime/repositories/RecordRepository.java @@ -45,7 +45,11 @@ public interface RecordRepository extends PagingAndSortingRepository current_date") + @Query("SELECT record from TimeRecord record " + + "where record.account.user.username = :#{principal} " + + "AND record.enddate > current_date " + + "AND record.enddate < current_date+1" + ) Page today(Pageable pageable); @RestResource(rel = "openEntries", path = "openEntries") diff --git a/backend/src/main/resources/data.sql b/backend/src/main/resources/data.sql index 7fb7b97..bfb9c6d 100644 --- a/backend/src/main/resources/data.sql +++ b/backend/src/main/resources/data.sql @@ -34,6 +34,8 @@ INSERT INTO time_record (id, enddate, startdate, `type`, account_id) VALUES (6, '2020-05-30 23:00:00', '2020-05-30 22:00:00', 1, 1), (7, '2020-05-31 01:00:00', '2020-05-31 00:00:00', 1, 1), (8, '2020-05-31 04:00:00', '2020-05-31 02:00:00', 1, 1), - (9, '2020-05-31 16:00:00', '2020-05-31 12:00:00', 1, 1); + (9, '2020-05-31 16:00:00', '2020-05-31 12:00:00', 1, 1), + (10, '2020-06-14 16:00:00', '2020-06-14 12:00:00', 1, 1), + (11, '2020-06-15 16:00:00', '2020-06-15 12:00:00', 1, 1); SET FOREIGN_KEY_CHECKS=1; \ No newline at end of file From 7b4887ecacdee3aac69759c641866da2dc544ff5 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Sun, 14 Jun 2020 16:14:27 +0200 Subject: [PATCH 2/2] Update documentation to show right lines for record repository --- documentation/parts/backend.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/parts/backend.tex b/documentation/parts/backend.tex index 72f9ce7..c94c8af 100644 --- a/documentation/parts/backend.tex +++ b/documentation/parts/backend.tex @@ -104,7 +104,7 @@ Werden nun noch weitere Funktionalitäten in den Repositories benötigt, können diese entweder selbst implementiert werden, oder durch gut ausgewählte Funktionsdefinitionen im Interface der Ressource deklariert werden. Spring kann die Implementierung dann aus dem Namen und den Parametern der Funktion ableiten. Als unser Maximalbeispiel dient hier das RecordRepository. - \lstinputlisting[language=Java,linerange={14-27,38-41,47-54},caption=RecordRepository,label=code:record-repository]{../backend/src/main/java/de/hft/geotime/repositories/RecordRepository.java} + \lstinputlisting[language=Java,linerange={14-27,38-41,47-58},caption=RecordRepository,label=code:record-repository]{../backend/src/main/java/de/hft/geotime/repositories/RecordRepository.java} In diesem Repository befinden sich diverse verschiedene Methoden, wie Datenoperationen definiert werden können, ohne dass sie aktiv implementiert werden müssen. Es beginnt mit der Funktion "findAllByStartdateBetween". Dieser Name kann direkt als Java Hibernate Statement interpretiert werden und nimmt als Parameter zwei Datumsangaben entgegen und eine Page. Die zwei Datumsangaben werden aus dem Schlüsselwort "Between" abgeleitet. Damit es sich aber um echt vergleichbare Daten handelt, müssen diese nach einem bestimmten Schema geparsed werden. Dieses Schema ist in der "DateTimeFormat" Annotation angegeben. Als Rückgabe liefert diese Funktion dann eine Menge aller Einträge zwischen diesen Daten.