Removed time zone from dateTime in db

This commit is contained in:
Guntis Smaukstelis
2023-12-18 16:19:27 +02:00
parent 2aa6c5f43c
commit 69458131bd
2 changed files with 11 additions and 13 deletions
@@ -1,5 +1,5 @@
CREATE TABLE IF NOT EXISTS weather ( CREATE TABLE IF NOT EXISTS weather (
dateTime TIMESTAMPTZ NOT NULL, dateTime TIMESTAMP NOT NULL,
city VARCHAR(255) NOT NULL, city VARCHAR(255) NOT NULL,
tempMax DOUBLE PRECISION, tempMax DOUBLE PRECISION,
tempMin DOUBLE PRECISION, tempMin DOUBLE PRECISION,
+10 -12
View File
@@ -23,7 +23,6 @@ object PostgresService {
} }
class PostgresService(transactor: Transactor[IO], log: Logger[IO]) { class PostgresService(transactor: Transactor[IO], log: Logger[IO]) {
private val rigaZone = ZoneId.of("Europe/Riga")
// in pgAdmin run: ```SET TIMEZONE = 'Europe/Riga';``` // in pgAdmin run: ```SET TIMEZONE = 'Europe/Riga';```
def save(fileName: String, content: String): IO[String] = { def save(fileName: String, content: String): IO[String] = {
@@ -150,8 +149,8 @@ class PostgresService(transactor: Transactor[IO], log: Logger[IO]) {
def getDatesByMonths(monthList: List[LocalDate]): IO[List[LocalDate]] = { def getDatesByMonths(monthList: List[LocalDate]): IO[List[LocalDate]] = {
val monthYearPairs = monthList.map { localDate => val monthYearPairs = monthList.map { localDate =>
val month = localDate.atStartOfDay.atZone(rigaZone).getMonthValue val month = localDate.atStartOfDay.getMonthValue
val year = localDate.atStartOfDay.atZone(rigaZone).getYear val year = localDate.atStartOfDay.getYear
(month, year) (month, year)
} }
@@ -194,9 +193,9 @@ class PostgresService(transactor: Transactor[IO], log: Logger[IO]) {
} }
def getDateFileNames(date: LocalDate): IO[List[String]] = { def getDateFileNames(date: LocalDate): IO[List[String]] = {
val year = date.atStartOfDay.atZone(rigaZone).getYear val year = date.atStartOfDay.getYear
val month = date.atStartOfDay.atZone(rigaZone).getMonthValue val month = date.atStartOfDay.getMonthValue
val day = date.atStartOfDay.atZone(rigaZone).getDayOfMonth val day = date.atStartOfDay.getDayOfMonth
val whereClauses = fr"(EXTRACT(DAY FROM dateTime) = $day AND EXTRACT(MONTH FROM dateTime) = $month AND EXTRACT(YEAR FROM dateTime) = $year)" val whereClauses = fr"(EXTRACT(DAY FROM dateTime) = $day AND EXTRACT(MONTH FROM dateTime) = $month AND EXTRACT(YEAR FROM dateTime) = $year)"
val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HH00") val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HH00")
@@ -212,7 +211,7 @@ class PostgresService(transactor: Transactor[IO], log: Logger[IO]) {
.transact(transactor) .transact(transactor)
.map { dateTimes => .map { dateTimes =>
dateTimes.map(dateTime => dateTimes.map(dateTime =>
dateTime.atZoneSameInstant(rigaZone).format(formatter) dateTime.format(formatter)
) )
} }
} }
@@ -239,12 +238,11 @@ class PostgresService(transactor: Transactor[IO], log: Logger[IO]) {
def insertInWeatherTable(data: List[WeatherStationData]): IO[Int] = { def insertInWeatherTable(data: List[WeatherStationData]): IO[Int] = {
getResourceContent("/db/insert_weather_table.sql").flatMap { insertTableSql => getResourceContent("/db/insert_weather_table.sql").flatMap { insertTableSql =>
val insertData = data.map(line => { val insertData = data.map(line => {
val zonedTime: ZonedDateTime = line.timestamp.atZone(rigaZone)
val w = line.weather val w = line.weather
(zonedTime, line.city, w.tempMax, w.tempMin, w.tempAvg, w.precipitation, w.windAvg, w.windMax, w.visibilityMin, w.visibilityAvg, w.snowAvg, w.atmPressure, w.dewPoint, w.humidity, w.sunDuration, w.phenomena) (line.timestamp, line.city, w.tempMax, w.tempMin, w.tempAvg, w.precipitation, w.windAvg, w.windMax, w.visibilityMin, w.visibilityAvg, w.snowAvg, w.atmPressure, w.dewPoint, w.humidity, w.sunDuration, w.phenomena)
}) })
Update[(ZonedDateTime, String, Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], List[String])](insertTableSql) Update[(LocalDateTime, String, Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], Option[Double], List[String])](insertTableSql)
.updateMany(insertData) .updateMany(insertData)
.transact(transactor) .transact(transactor)
} }
@@ -252,8 +250,8 @@ class PostgresService(transactor: Transactor[IO], log: Logger[IO]) {
def selectWeatherTable(): IO[List[(String, Option[Double])]] = { def selectWeatherTable(): IO[List[(String, Option[Double])]] = {
val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm") val formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm")
val from = LocalDateTime.parse("20230516_0100", formatter).atZone(rigaZone) val from = LocalDateTime.parse("20230516_0100", formatter)
val to = LocalDateTime.parse("20230516_1500", formatter).atZone(rigaZone) val to = LocalDateTime.parse("20230516_1500", formatter)
val citiesNel = NonEmptyList.of("Rīga", "Rēzekne") val citiesNel = NonEmptyList.of("Rīga", "Rēzekne")
val granularity = "HOUR" // "HOUR", "DAY", "MONTH", "YEAR" val granularity = "HOUR" // "HOUR", "DAY", "MONTH", "YEAR"
val columnName = "tempMin" val columnName = "tempMin"