From 8095e49113ba2f62412ee5b6fa6476608777fffd Mon Sep 17 00:00:00 2001 From: ashikka Date: Mon, 16 Aug 2021 23:55:49 +0530 Subject: [PATCH 1/7] feat: Added docker-compose.yml --- docker-compose.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..068b3ed --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.9" + +services: + db: + image: postgres:13.3 + volumes: + - ./data/db:/var/lib/postgres/data + environment: + - POSTGRES_DB=postgres + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres From 62cdf4cdfd1697a79fc302c8fd3d1deb6a4a144a Mon Sep 17 00:00:00 2001 From: ashikka Date: Wed, 25 Aug 2021 22:16:02 +0530 Subject: [PATCH 2/7] feat: Added filter log entries by date query handler --- .../application/FilterLogEntryByDateQuery.kt | 3 +++ .../FilterLogEntryByDateQueryHandler.kt | 18 ++++++++++++++++++ .../logentry/domain/LogEntryRepository.kt | 1 + .../database/JpaLogEntryRepository.kt | 1 + .../database/LogEntryDatabasePC.kt | 6 ++++++ 5 files changed, 29 insertions(+) create mode 100644 src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt create mode 100644 src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt new file mode 100644 index 0000000..d45204a --- /dev/null +++ b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt @@ -0,0 +1,3 @@ +package com.quipalup.katydid.logentry.application + +data class FilterLogEntryByDateQuery(val time: Long) diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt new file mode 100644 index 0000000..04cc3a7 --- /dev/null +++ b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt @@ -0,0 +1,18 @@ +package com.quipalup.katydid.logentry.application + +import arrow.core.Either +import com.quipalup.katydid.logentry.domain.FindLogEntryError +import com.quipalup.katydid.logentry.domain.LogEntryRepositoryPC +import com.quipalup.katydid.logentry.domain.LogEntry_ +import arrow.core.flatMap + + +class FilterLogEntryByDateQueryHandler(private val logEntryRepository: LogEntryRepositoryPC) { + fun execute( + query: + FilterLogEntryByDateQuery + ): List { + return logEntryRepository.filterLogEntryByDate(query.time) + } + +} diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt b/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt index 06576ad..6fca5e3 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt @@ -14,4 +14,5 @@ interface LogEntryRepository { interface LogEntryRepositoryPC { fun searchAllByChildId(childId: ChildId): List fun save(logEntry: LogEntry_) + fun filterLogEntryByDate(time: Long): List } diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt index 470f2c8..2c6ff1b 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt @@ -24,6 +24,7 @@ interface JpaLogEntryRepository : JpaRepository interface JpaLogEntryRepositoryPC : JpaRepository { fun findAllByChildId(childId: String): List + fun filterLogEntryByDate(time: Long): List } @Entity diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt index 58d2c8b..b954e24 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt @@ -18,6 +18,12 @@ class LogEntryDatabasePC(private val jpaLogEntryRepository: JpaLogEntryRepositor jpaLogEntryRepository.save(logEntry.toJpa()) } + override fun filterLogEntryByDate(time: Long): List = + jpaLogEntryRepository.filterLogEntryByDate(time) + .map { it.toLogEntry_() } + .filter { it.isRight() } + .map { (it as Either.Right).value } + private fun LogEntry_.toJpa(): JpaLogEntryPC_ = when (this) { is LogEntry_.Meal -> JpaMealLogEntryPC( From e4b72c7a4e9a46073392f3e38f58de44172572e0 Mon Sep 17 00:00:00 2001 From: ashikka Date: Tue, 31 Aug 2021 13:03:27 +0530 Subject: [PATCH 3/7] feat: Added FilterLogEntryByDateQueryHandlerTest --- .../FilterLogEntryByDateQueryHandlerTest.kt | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt diff --git a/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt b/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt new file mode 100644 index 0000000..ab393c4 --- /dev/null +++ b/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt @@ -0,0 +1,82 @@ +package com.quipalup.katydid.logentry.application + +import arrow.core.Either +import arrow.core.right +import com.quipalup.katydid.child.common.domain.Child +import com.quipalup.katydid.child.search.domain.FindChildByIdError +import com.quipalup.katydid.common.id.toChildId +import com.quipalup.katydid.common.id.toId +import com.quipalup.katydid.logentry.application.FilterLogEntryByDateQueryHandlerTest.Companion.mealLogEntry +import com.quipalup.katydid.logentry.domain.LogEntryRepositoryPC +import com.quipalup.katydid.logentry.domain.LogEntry_ +import com.quipalup.katydid.logentry.secondaryadapter.database.LogEntryDatabasePC +import io.mockk.every +import io.mockk.mockk +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import java.time.ZoneId +import java.time.ZonedDateTime +import java.util.* + +class FilterLogEntryByDateQueryHandlerTest { + private val repository = mockk() + private val filterLogEntryByDateQueryHandler: FilterLogEntryByDateQueryHandler = + FilterLogEntryByDateQueryHandler(repository) + + @Test + fun `filter log entries by date`() { + val expectedLogEntries = listOf(mealLogEntry, napLogEntry) + + `will return log entry for given date`(repository, time, listOf(mealLogEntry, napLogEntry)) + val logEntries = filterLogEntryByDateQueryHandler.execute(filterLogEntryByDateQuery) + + assertThat(logEntries).isEqualTo(expectedLogEntries) + + } + + private fun `will return log entry for given date`( + repository: LogEntryRepositoryPC, + time: Long, + logEntry_: List + ) { + every { + repository.filterLogEntryByDate(time) + } returns logEntry_.toStubResult() + } + + companion object { + private val childId = UUID.randomUUID().toChildId() + private val mealId = UUID.randomUUID().toId() + private val time = ZonedDateTime + .of(2021, 6, 23, 20, 30, 50, 4, ZoneId.of("UTC")) + .toEpochSecond() + private val filterLogEntryByDateQuery = FilterLogEntryByDateQuery(time) + + private const val description = "Spaghetti bolognese" + private const val amount = 4 + private const val unit = "grams" + + private val mealLogEntry = LogEntry_.Meal( + id = mealId, + childId = childId, + time = time, + description = description, + amount = amount, + unit = unit + ) + + private val napId = UUID.randomUUID().toId() + + private val napLogEntry = LogEntry_.Nap( + id = napId, + childId = childId, + time = time, + duration = 3 + ) + + private fun List.toStubResult(): List = + listOf(mealLogEntry, napLogEntry) + + + } +} \ No newline at end of file From b25089b63a7af71026850a382ab9843b3cbf76f5 Mon Sep 17 00:00:00 2001 From: ashikka Date: Tue, 31 Aug 2021 13:28:30 +0530 Subject: [PATCH 4/7] fix: Linting --- .../FilterLogEntryByDateQueryHandler.kt | 5 ----- .../FilterLogEntryByDateQueryHandlerTest.kt | 17 ++++------------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt index 04cc3a7..d59c07f 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt @@ -1,11 +1,7 @@ package com.quipalup.katydid.logentry.application -import arrow.core.Either -import com.quipalup.katydid.logentry.domain.FindLogEntryError import com.quipalup.katydid.logentry.domain.LogEntryRepositoryPC import com.quipalup.katydid.logentry.domain.LogEntry_ -import arrow.core.flatMap - class FilterLogEntryByDateQueryHandler(private val logEntryRepository: LogEntryRepositoryPC) { fun execute( @@ -14,5 +10,4 @@ class FilterLogEntryByDateQueryHandler(private val logEntryRepository: LogEntryR ): List { return logEntryRepository.filterLogEntryByDate(query.time) } - } diff --git a/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt b/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt index ab393c4..c52a442 100644 --- a/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt +++ b/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt @@ -1,22 +1,16 @@ package com.quipalup.katydid.logentry.application -import arrow.core.Either -import arrow.core.right -import com.quipalup.katydid.child.common.domain.Child -import com.quipalup.katydid.child.search.domain.FindChildByIdError import com.quipalup.katydid.common.id.toChildId import com.quipalup.katydid.common.id.toId -import com.quipalup.katydid.logentry.application.FilterLogEntryByDateQueryHandlerTest.Companion.mealLogEntry import com.quipalup.katydid.logentry.domain.LogEntryRepositoryPC import com.quipalup.katydid.logentry.domain.LogEntry_ -import com.quipalup.katydid.logentry.secondaryadapter.database.LogEntryDatabasePC import io.mockk.every import io.mockk.mockk -import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.Test import java.time.ZoneId import java.time.ZonedDateTime -import java.util.* +import java.util.UUID +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test class FilterLogEntryByDateQueryHandlerTest { private val repository = mockk() @@ -31,7 +25,6 @@ class FilterLogEntryByDateQueryHandlerTest { val logEntries = filterLogEntryByDateQueryHandler.execute(filterLogEntryByDateQuery) assertThat(logEntries).isEqualTo(expectedLogEntries) - } private fun `will return log entry for given date`( @@ -76,7 +69,5 @@ class FilterLogEntryByDateQueryHandlerTest { private fun List.toStubResult(): List = listOf(mealLogEntry, napLogEntry) - - } -} \ No newline at end of file +} From 578391e22f8fed28669b9d9f85db0f2c91008b0b Mon Sep 17 00:00:00 2001 From: ashikka Date: Fri, 3 Sep 2021 13:38:43 +0530 Subject: [PATCH 5/7] fix: Interface methods --- .../logentry/secondaryadapter/database/JpaLogEntryRepository.kt | 2 +- .../logentry/secondaryadapter/database/LogEntryDatabasePC.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt index 2c6ff1b..322ef30 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt @@ -24,7 +24,7 @@ interface JpaLogEntryRepository : JpaRepository interface JpaLogEntryRepositoryPC : JpaRepository { fun findAllByChildId(childId: String): List - fun filterLogEntryByDate(time: Long): List + fun findAllByDate(time: Long): List } @Entity diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt index b954e24..863b78b 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt @@ -19,7 +19,7 @@ class LogEntryDatabasePC(private val jpaLogEntryRepository: JpaLogEntryRepositor } override fun filterLogEntryByDate(time: Long): List = - jpaLogEntryRepository.filterLogEntryByDate(time) + jpaLogEntryRepository.findAllByDate(time) .map { it.toLogEntry_() } .filter { it.isRight() } .map { (it as Either.Right).value } From 21bd093f1e4b1fc33a04f5d63ce4bd92a4517f66 Mon Sep 17 00:00:00 2001 From: ashikka Date: Fri, 3 Sep 2021 17:54:40 +0530 Subject: [PATCH 6/7] Feat: Time type --- .../com/quipalup/katydid/SearchLogEntriesCT.kt | 2 +- .../application/FilterLogEntryByDateQuery.kt | 4 +++- .../FilterLogEntryByDateQueryHandler.kt | 2 +- .../katydid/logentry/domain/LogEntry.kt | 5 +++-- .../logentry/domain/LogEntryRepository.kt | 3 ++- .../api/SearchLogEntriesDocument.kt | 6 ++++-- .../database/JpaLogEntryRepository.kt | 9 +++++---- .../database/LogEntryDatabasePC.kt | 5 +++-- .../FilterLogEntryByDateQueryHandlerTest.kt | 17 ++++++++++++----- ...archLogEntriesByChildIdCommandHandlerTest.kt | 1 - .../SearchLogEntriesCommandHandlerTest.kt | 1 - .../database/LogEntryDatabasePCTest.kt | 1 - 12 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt b/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt index 23a754e..0233edf 100644 --- a/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt +++ b/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt @@ -64,7 +64,7 @@ class SearchLogEntriesCT { private val time = ZonedDateTime .of(2021, 6, 23, 20, 30, 50, 4, ZoneId.of("UTC")) - .toEpochSecond() + private const val description = "Spaghetti bolognese" private const val amount = 4 diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt index d45204a..b5ffaf7 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQuery.kt @@ -1,3 +1,5 @@ package com.quipalup.katydid.logentry.application -data class FilterLogEntryByDateQuery(val time: Long) +import java.time.ZonedDateTime + +data class FilterLogEntryByDateQuery(val from: ZonedDateTime, val to: ZonedDateTime) diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt index d59c07f..cff257f 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandler.kt @@ -8,6 +8,6 @@ class FilterLogEntryByDateQueryHandler(private val logEntryRepository: LogEntryR query: FilterLogEntryByDateQuery ): List { - return logEntryRepository.filterLogEntryByDate(query.time) + return logEntryRepository.filterLogEntryByDate(query.from, query.to) } } diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntry.kt b/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntry.kt index aecd233..3f5e9c9 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntry.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntry.kt @@ -1,6 +1,7 @@ package com.quipalup.katydid.logentry.domain import com.quipalup.katydid.common.id.Id +import java.time.ZonedDateTime import java.util.UUID data class LogEntry( @@ -18,7 +19,7 @@ sealed class LogEntry_ { class Meal( val id: Id, override val childId: ChildId, - val time: Long, + val time: ZonedDateTime, val description: String, val amount: Int, val unit: String @@ -27,7 +28,7 @@ sealed class LogEntry_ { class Nap( val id: Id, override val childId: ChildId, - val time: Long, + val time: ZonedDateTime, val duration: Long ) : LogEntry_() } diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt b/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt index 6fca5e3..3239829 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/domain/LogEntryRepository.kt @@ -2,6 +2,7 @@ package com.quipalup.katydid.logentry.domain import arrow.core.Either import com.quipalup.katydid.common.id.Id +import java.time.ZonedDateTime interface LogEntryRepository { fun findById(id: Id): Either @@ -14,5 +15,5 @@ interface LogEntryRepository { interface LogEntryRepositoryPC { fun searchAllByChildId(childId: ChildId): List fun save(logEntry: LogEntry_) - fun filterLogEntryByDate(time: Long): List + fun filterLogEntryByDate(from: ZonedDateTime, to: ZonedDateTime): List } diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesDocument.kt b/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesDocument.kt index b459093..c64f1c8 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesDocument.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesDocument.kt @@ -1,5 +1,7 @@ package com.quipalup.katydid.logentry.primaryadapter.api +import java.time.ZonedDateTime + data class SearchLogEntriesDocument( val data: List = listOf(), val included: List = listOf() @@ -45,7 +47,7 @@ sealed class IncludedChildDocument { data class MealLogEntryDocumentAttributes( val childId: String, - val time: Long, + val time: ZonedDateTime, val description: String, val amount: Int, val unit: String @@ -53,7 +55,7 @@ data class MealLogEntryDocumentAttributes( data class NapLogEntryDocumentAttributes( val childId: String, - val time: Long, + val time: ZonedDateTime, val duration: Long ) diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt index 322ef30..8a92a38 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/JpaLogEntryRepository.kt @@ -10,6 +10,7 @@ import com.quipalup.katydid.logentry.domain.FindLogEntryError import com.quipalup.katydid.logentry.domain.LogEntry import com.quipalup.katydid.logentry.domain.LogEntryMappingError import com.quipalup.katydid.logentry.domain.LogEntry_ +import java.time.ZonedDateTime import java.util.UUID import javax.inject.Named import javax.persistence.Column @@ -24,7 +25,7 @@ interface JpaLogEntryRepository : JpaRepository interface JpaLogEntryRepositoryPC : JpaRepository { fun findAllByChildId(childId: String): List - fun findAllByDate(time: Long): List + fun findByTimeBetween(from: ZonedDateTime, to: ZonedDateTime): List } @Entity @@ -57,7 +58,7 @@ open class JpaLogEntryPC_( @Column(name = "child_id") open var childId: String, @Column(name = "occurred_on") - open var time: Long + open var time: ZonedDateTime ) { fun toLogEntry_(): Either = when (this) { @@ -72,7 +73,7 @@ open class JpaLogEntryPC_( class JpaMealLogEntryPC( id: String, childId: String, - time: Long, + time: ZonedDateTime, val description: String, val amount: Int, val unit: String @@ -92,7 +93,7 @@ class JpaMealLogEntryPC( class JpaNapLogEntryPC( id: String, childId: String, - time: Long, + time: ZonedDateTime, private val duration: Long ) : JpaLogEntryPC_(id, childId, time) { fun toNapLogEntry(): LogEntry_ = LogEntry_.Nap( diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt index 863b78b..e281f60 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePC.kt @@ -4,6 +4,7 @@ import arrow.core.Either import com.quipalup.katydid.logentry.domain.ChildId import com.quipalup.katydid.logentry.domain.LogEntryRepositoryPC import com.quipalup.katydid.logentry.domain.LogEntry_ +import java.time.ZonedDateTime import javax.inject.Named @Named @@ -18,8 +19,8 @@ class LogEntryDatabasePC(private val jpaLogEntryRepository: JpaLogEntryRepositor jpaLogEntryRepository.save(logEntry.toJpa()) } - override fun filterLogEntryByDate(time: Long): List = - jpaLogEntryRepository.findAllByDate(time) + override fun filterLogEntryByDate(from: ZonedDateTime, to: ZonedDateTime): List = + jpaLogEntryRepository.findByTimeBetween(from, to) .map { it.toLogEntry_() } .filter { it.isRight() } .map { (it as Either.Right).value } diff --git a/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt b/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt index c52a442..7236c7d 100644 --- a/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt +++ b/src/test/kotlin/com/quipalup/katydid/logentry/application/FilterLogEntryByDateQueryHandlerTest.kt @@ -21,7 +21,7 @@ class FilterLogEntryByDateQueryHandlerTest { fun `filter log entries by date`() { val expectedLogEntries = listOf(mealLogEntry, napLogEntry) - `will return log entry for given date`(repository, time, listOf(mealLogEntry, napLogEntry)) + `will return log entry for given date`(repository, from, to, listOf(mealLogEntry, napLogEntry)) val logEntries = filterLogEntryByDateQueryHandler.execute(filterLogEntryByDateQuery) assertThat(logEntries).isEqualTo(expectedLogEntries) @@ -29,11 +29,12 @@ class FilterLogEntryByDateQueryHandlerTest { private fun `will return log entry for given date`( repository: LogEntryRepositoryPC, - time: Long, + from: ZonedDateTime, + to: ZonedDateTime, logEntry_: List ) { every { - repository.filterLogEntryByDate(time) + repository.filterLogEntryByDate(from, to) } returns logEntry_.toStubResult() } @@ -42,8 +43,14 @@ class FilterLogEntryByDateQueryHandlerTest { private val mealId = UUID.randomUUID().toId() private val time = ZonedDateTime .of(2021, 6, 23, 20, 30, 50, 4, ZoneId.of("UTC")) - .toEpochSecond() - private val filterLogEntryByDateQuery = FilterLogEntryByDateQuery(time) + + private val from = ZonedDateTime + .of(2021, 6, 23, 20, 30, 50, 4, ZoneId.of("UTC")) + + private val to = ZonedDateTime + .of(2021, 6, 20, 20, 30, 50, 4, ZoneId.of("UTC")) + + private val filterLogEntryByDateQuery = FilterLogEntryByDateQuery(from, to) private const val description = "Spaghetti bolognese" private const val amount = 4 diff --git a/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesByChildIdCommandHandlerTest.kt b/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesByChildIdCommandHandlerTest.kt index 11bb7d0..b360620 100644 --- a/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesByChildIdCommandHandlerTest.kt +++ b/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesByChildIdCommandHandlerTest.kt @@ -32,7 +32,6 @@ class SearchLogEntriesByChildIdCommandHandlerTest { private val searchLogEntriesCommand = SearchLogEntriesByChildIdCommand(childId.value().toString()) private val time = ZonedDateTime .of(2021, 6, 23, 20, 30, 50, 4, ZoneId.of("UTC")) - .toEpochSecond() private const val description = "Spaghetti bolognese" private const val amount = 4 diff --git a/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesCommandHandlerTest.kt b/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesCommandHandlerTest.kt index 0a3127a..4d9fcf7 100644 --- a/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesCommandHandlerTest.kt +++ b/src/test/kotlin/com/quipalup/katydid/logentry/application/SearchLogEntriesCommandHandlerTest.kt @@ -32,7 +32,6 @@ class SearchLogEntriesCommandHandlerTest { private val searchLogEntriesCommand = SearchLogEntriesByChildIdCommand(childId.value().toString()) private val time = ZonedDateTime .of(2021, 6, 23, 20, 30, 50, 4, ZoneId.of("UTC")) - .toEpochSecond() private const val description = "Spaghetti bolognese" private const val amount = 4 diff --git a/src/test/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePCTest.kt b/src/test/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePCTest.kt index 86d3a7e..cdf8831 100644 --- a/src/test/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePCTest.kt +++ b/src/test/kotlin/com/quipalup/katydid/logentry/secondaryadapter/database/LogEntryDatabasePCTest.kt @@ -54,7 +54,6 @@ internal class LogEntryDatabasePCTest { private val time = ZonedDateTime .of(2021, 6, 23, 20, 30, 50, 4, ZoneId.of("UTC")) - .toEpochSecond() private const val description = "Spaghetti bolognese" private const val amount = 4 From cecb1323186192529263c13aa0c3c5ee0f06745d Mon Sep 17 00:00:00 2001 From: ashikka Date: Thu, 9 Sep 2021 22:43:47 +0530 Subject: [PATCH 7/7] fix: Data type --- .../quipalup/katydid/CreateMealLogEntryCT.kt | 4 ++-- .../quipalup/katydid/SearchLogEntriesCT.kt | 5 +++-- .../api/SearchLogEntriesEndpoint.kt | 6 ++++-- src/main/resources/data.sql | 20 +++++++++---------- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/containerTest/kotlin/com/quipalup/katydid/CreateMealLogEntryCT.kt b/src/containerTest/kotlin/com/quipalup/katydid/CreateMealLogEntryCT.kt index bcc8aa0..84f9ef3 100644 --- a/src/containerTest/kotlin/com/quipalup/katydid/CreateMealLogEntryCT.kt +++ b/src/containerTest/kotlin/com/quipalup/katydid/CreateMealLogEntryCT.kt @@ -59,7 +59,7 @@ class CreateMealLogEntryCT { { "type": "meal-log-entry", "attributes": { - "time": 123345534, + "time": "2018-01-02 13:14:15+01", "description": "Yogurt with strawberries", "amount": 100, "unit": "percentage" @@ -75,7 +75,7 @@ class CreateMealLogEntryCT { "id": "$uuid", "type": "meal-log-entry", "attributes": { - "time": 123345534, + "time": "2018-01-02 13:14:15+01", "description": "Yogurt with strawberries", "amount": 100, "unit": "percentage" diff --git a/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt b/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt index 0233edf..3e19d71 100644 --- a/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt +++ b/src/containerTest/kotlin/com/quipalup/katydid/SearchLogEntriesCT.kt @@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest import org.springframework.boot.web.server.LocalServerPort import org.springframework.test.annotation.DirtiesContext +import java.time.ZoneOffset @SpringBootTest( classes = [Katydid::class], @@ -103,7 +104,7 @@ class SearchLogEntriesCT { "type": "meal", "attributes": { "childId": "${childId.value}", - "time": $time, + "time": "$time", "description": "$description", "amount": $amount, "unit": "$unit" @@ -127,7 +128,7 @@ class SearchLogEntriesCT { "type": "nap", "attributes": { "childId": "${childId.value}", - "time": $time, + "time": "$time", "duration": $duration }, links: { diff --git a/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesEndpoint.kt b/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesEndpoint.kt index d035d53..c2e3084 100644 --- a/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesEndpoint.kt +++ b/src/main/kotlin/com/quipalup/katydid/logentry/primaryadapter/api/SearchLogEntriesEndpoint.kt @@ -11,6 +11,8 @@ import com.quipalup.katydid.logentry.domain.LogEntry_ import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController +import java.time.ZoneId +import java.time.ZonedDateTime @RestController class SearchLogEntriesEndpoint( @@ -52,7 +54,7 @@ fun Pair, List>.toSearchLogEn id = it.id.value.toString(), attributes = MealLogEntryDocumentAttributes( childId = it.childId.value().toString(), - time = it.time, + time = ZonedDateTime.of(it.time.toLocalDateTime(), ZoneId.of("UTC")), description = it.description, amount = it.amount, unit = it.unit @@ -67,7 +69,7 @@ fun Pair, List>.toSearchLogEn id = it.id.value.toString(), attributes = NapLogEntryDocumentAttributes( childId = it.childId.value().toString(), - time = it.time, + time = ZonedDateTime.of(it.time.toLocalDateTime(), ZoneId.of("UTC")), duration = it.duration ), relationships = LogEntryChildRelationship( diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 222c886..26ec668 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -4,7 +4,7 @@ INSERT INTO log_entry VALUES( '93acd93f-cc03-49ab-b761-b2b2810ad505', '5ee62461-adb8-4618-a110-06290a787223', - 1625814857 + '2018-01-02 13:14:15+01' ); INSERT INTO meal_log_entry @@ -19,7 +19,7 @@ INSERT INTO log_entry VALUES( 'd2ff5b08-572b-4559-bb1f-0b5cdf01480e', '86a93463-e7e1-4fc0-b12c-981f1eea16e8', - 1625829017 + '2018-01-02 13:14:15+01' ); INSERT INTO meal_log_entry @@ -35,7 +35,7 @@ INSERT INTO log_entry VALUES( '2da2e8c9-e698-4e02-8185-99972f858cf1', 'b9c2380f-0b4c-4871-aefc-a6ed2c3a2408', - 1625828417 + '2018-01-02 13:14:15+01' ); INSERT INTO meal_log_entry @@ -50,7 +50,7 @@ INSERT INTO log_entry VALUES( '6f64212b-333a-4c27-a166-e2d9403c6bc9', 'a5edf2fa-30b1-45e4-a39b-96243fa60caa', - 1625817617 + '2018-01-02 13:14:15+01' ); INSERT INTO meal_log_entry @@ -65,7 +65,7 @@ INSERT INTO log_entry VALUES( 'a43dcdca-1840-4a11-b17c-d33ba0bdec4b', '666cf327-09da-46ad-a01c-d3ae6e8ebc9d', - 1625811677 + '2018-01-02 13:14:15+01' ); INSERT INTO meal_log_entry @@ -81,7 +81,7 @@ INSERT INTO log_entry VALUES( '7a49cfd6-6a8a-404c-ad97-c51763341fe1', '5ee62461-adb8-4618-a110-06290a787223', - 1625819117 + '2018-01-02 13:14:15+01' ); INSERT INTO nap_log_entry @@ -94,7 +94,7 @@ INSERT INTO log_entry VALUES( 'd952c8d7-900f-46df-820c-a95910d8b2ee', '86a93463-e7e1-4fc0-b12c-981f1eea16e8', - 1625822837 + '2018-01-02 13:14:15+01' ); @@ -108,7 +108,7 @@ INSERT INTO log_entry VALUES( '9ca4af5c-6fe5-4d86-b553-38e0917a22a2', 'b9c2380f-0b4c-4871-aefc-a6ed2c3a2408', - 1625829017 + '2018-01-02 13:14:15+01' ); @@ -122,7 +122,7 @@ INSERT INTO log_entry VALUES( 'fb6ead93-7a69-4341-837d-e020845f1983', 'a5edf2fa-30b1-45e4-a39b-96243fa60caa', - 1625836517 + '2018-01-02 13:14:15+01' ); @@ -136,7 +136,7 @@ INSERT INTO log_entry VALUES( '69d6da73-c8fb-4496-ae9b-ad70a4244df3', '666cf327-09da-46ad-a01c-d3ae6e8ebc9d', - 1625836517 + '2018-01-02 13:14:15+01' );