print all training stats after GPX processing

This commit is contained in:
Riccardo Berto 2021-03-01 15:45:46 +01:00
parent ff2dbd8906
commit 320123ad74
2 changed files with 23 additions and 0 deletions

View File

@ -11,6 +11,8 @@ from sqlalchemy.engine import Connection
import gpxpy
from bs4 import BeautifulSoup
from stats import print_stats
config = configparser.ConfigParser()
config.read('config.ini')
@ -117,6 +119,7 @@ def main():
init_database()
get_gpx_files_from_mail()
db.transaction(process_gpx_files)
print_stats(db)
if __name__ == '__main__':

20
stats.py Normal file
View File

@ -0,0 +1,20 @@
from sqlalchemy.engine import Connection
from tabulate import tabulate
def print_stats(db: Connection):
overall_stats = """
select distinct
td.t::date,
date_trunc('second', training_duration.start_time::time) as start_time,
date_trunc('second', training_duration.end_time::time) as end_time,
training_duration.duration as duration,
round(((t.moving_distance)/1000)::numeric, 2) as distance,
round(( (t.moving_distance / 1000) / (select extract(epoch from training_duration.duration)/3600))::numeric, 1) as pace_kmh
from training t
join training_data td on (t.id = td.training_id)
join training_duration on (t.id = training_duration.id)
order by td.t::date, date_trunc('second', training_duration.start_time::time) asc
"""
print(tabulate(list(db.execute(overall_stats)),
headers = ["date", "start_time", "end_time", "duration", "distance", "pace (km/h)"]))