StatefulFetchService to save last 24h of data
This commit is contained in:
@@ -2,16 +2,17 @@ package server
|
||||
import cats.effect._
|
||||
import cats.implicits.catsSyntaxTuple2Parallel
|
||||
import db.DBService
|
||||
import fetch.{FetchService, FileFetchScheduler}
|
||||
import fetch.{FetchService, FileFetchScheduler, StatefulFetchService}
|
||||
|
||||
object Main extends IOApp {
|
||||
def run(args: List[String]): IO[ExitCode] = {
|
||||
for {
|
||||
dbService <- DBService.of
|
||||
fetch <- FetchService.of
|
||||
fileFetchScheduler <- FileFetchScheduler.of(dbService, fetch)
|
||||
statefulFetch <- StatefulFetchService.of(fetch)
|
||||
fileFetchScheduler <- FileFetchScheduler.of(dbService, statefulFetch)
|
||||
schedulerTask = fileFetchScheduler.run.compile.drain
|
||||
server <- Server.of(dbService, fetch)
|
||||
server <- Server.of(dbService, statefulFetch)
|
||||
serverTask = server.run
|
||||
exitCode <- (serverTask, schedulerTask).parMapN((_, _) => ExitCode.Success)
|
||||
} yield exitCode
|
||||
|
||||
@@ -4,7 +4,7 @@ import cats.effect._
|
||||
import cats.implicits.toTraverseOps
|
||||
import com.comcast.ip4s.IpLiteralSyntax
|
||||
import db.DBService
|
||||
import fetch.FetchService
|
||||
import fetch.FetchServiceTrait
|
||||
import parse.{Parser, WeatherData}
|
||||
import server.ValidateRoutes.{AggKey, CityList, DateTimeRange, ValidDate}
|
||||
import io.circe.{Json, Printer}
|
||||
@@ -26,14 +26,14 @@ import scala.concurrent.duration.DurationInt
|
||||
|
||||
|
||||
object Server {
|
||||
def of(dbService: DBService, fetch: FetchService): IO[Server] = {
|
||||
def of(dbService: DBService, fetch: FetchServiceTrait): IO[Server] = {
|
||||
Slf4jLogger.create[IO].map {
|
||||
new Server(dbService, fetch, _)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Server(dbService: DBService, fetch: FetchService, log: Logger[IO]) {
|
||||
class Server(dbService: DBService, fetch: FetchServiceTrait, log: Logger[IO]) {
|
||||
|
||||
// Define the extension method `pretty` for Json
|
||||
implicit class JsonPrettyPrinter(json: Json) {
|
||||
|
||||
Reference in New Issue
Block a user