From b0834a80447b4b42f3bd4346240f3faa24749d53 Mon Sep 17 00:00:00 2001 From: Michael Simard Date: Thu, 10 Dec 2020 08:10:44 -0600 Subject: [PATCH] update date decoder --- Sources/App/Controllers/StatsController.swift | 14 ++++---------- Sources/App/configure.swift | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Sources/App/Controllers/StatsController.swift b/Sources/App/Controllers/StatsController.swift index f889eea..c71d6ce 100644 --- a/Sources/App/Controllers/StatsController.swift +++ b/Sources/App/Controllers/StatsController.swift @@ -24,20 +24,13 @@ struct StatsController: RouteCollection { statsRoute.post("logMatch", use: logMatch) } + - - struct CreateMatchRequestBody: Content { - let match: Match - - func makeMatch(match:Match) -> Match { - return Match(id: match.id, map: match.map, win: match.win, date: match.date, roundsWon: match.roundsWon, roundsLost: match.roundsLost, codGame: match.codGame, notes: match.notes, players: match.players) - } - - } + func logMatch(req: Request) throws -> EventLoopFuture { - let newMatch = try req.content.decode(Match.self) + let newMatch = try req.content.decode(Match.self) return newMatch.save(on: req.db).map { newMatch} } @@ -246,6 +239,7 @@ struct StatsController: RouteCollection { let mostRecentDailyStats = self.mostRecentDailyStats(matches: matches) return AllStats.init(overall: overallStats,mwStats: mwStats, bocwStats: bocwStats, byMonth: monthlyStats, highestWinLossRatio: highestWinLossRatio, dataPoints: cumulativeWinLossRatios, mostRecentRecord: "\(mostRecentDailyStats.totalWins) - \(mostRecentDailyStats.totalLosses)") + } diff --git a/Sources/App/configure.swift b/Sources/App/configure.swift index 6bb68ce..8181fc1 100644 --- a/Sources/App/configure.swift +++ b/Sources/App/configure.swift @@ -23,6 +23,20 @@ public func configure(_ app: Application) throws { app.migrations.add(AddCODGame2()) + + // create a new JSON encoder that uses unix-timestamp dates + let decoder = JSONDecoder() + + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" + decoder.dateDecodingStrategy = .formatted(formatter) + + // override the global encoder used for the `.json` media type + ContentConfiguration.global.use(decoder: decoder, for: .json) + // register routes try routes(app) }