From e30cf0345f0e2983b1c9324285dafd4724c0583f Mon Sep 17 00:00:00 2001 From: Dmitrii Morozov Date: Fri, 21 Jun 2024 21:56:40 +0200 Subject: Fixed stats calculation --- persistence/__init__.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'persistence') diff --git a/persistence/__init__.py b/persistence/__init__.py index 663522e..1c6057c 100644 --- a/persistence/__init__.py +++ b/persistence/__init__.py @@ -1,6 +1,6 @@ import sqlite3, typing from app_types import * -from datetime import date +import datetime class UserRepository: @@ -58,17 +58,17 @@ class StatsRepository: def __initialize(self): cur = self.__get_connection().cursor() - cur.execute("CREATE TABLE IF NOT EXISTS stats(user_id TEXT, stats_date DATE, display_name TEXT, level INT, matches_played INT, kills INT, wins INT)") - cur.execute("CREATE UNIQUE INDEX IF NOT EXISTS user_id_date_idx ON stats(user_id, stats_date)") + cur.execute("CREATE TABLE IF NOT EXISTS stats(user_id TEXT, stats_datetime DATETIME, display_name TEXT, level INT, matches_played INT, kills INT, wins INT)") + cur.execute("CREATE UNIQUE INDEX IF NOT EXISTS user_id_date_idx ON stats(user_id, stats_datetime)") - async def put_stats(self, user: User, stats_date: date = date.today()): + async def put_stats(self, user: User, stats_datetime: datetime.datetime = datetime.datetime.now()): stats: UserStats = await user.fetch_stats() connection = self.__get_connection() cur = connection.cursor() - query = "INSERT OR REPLACE INTO stats(user_id, stats_date, display_name, level, matches_played, kills, wins) VALUES('{user_id}', '{stats_date}', '{display_name}', {level}, {matches_played}, {kills}, {wins})".format( + query = "INSERT OR REPLACE INTO stats(user_id, stats_datetime, display_name, level, matches_played, kills, wins) VALUES('{user_id}', '{stats_datetime}', '{display_name}', {level}, {matches_played}, {kills}, {wins})".format( user_id = user.id, - stats_date = stats_date, + stats_datetime = stats_datetime, display_name = user.display_name, level = stats.level, matches_played = stats.matches_played, @@ -77,10 +77,10 @@ class StatsRepository: cur.execute(query) connection.commit() - def get_stats(self, stats_date: date = date.today()) -> typing.List[UserStats]: + def get_stats(self, stats_datetime: datetime.datetime = datetime.datetime.now()) -> typing.List[UserStats]: connection = self.__get_connection() cur = connection.cursor() - query = "SELECT * FROM stats WHERE stats_date IN (SELECT MIN(stats_date) FROM stats WHERE stats_date >= '{stats_date}')".format(stats_date = stats_date) + query = "SELECT * FROM stats WHERE stats_datetime IN (SELECT MIN(stats_datetime) FROM stats WHERE stats_datetime >= '{stats_datetime}')".format(stats_datetime = stats_datetime) cur.execute(query) result = cur.fetchall() return [self.__map_from_db(stats) for stats in result] -- cgit v1.2.3