@@ -640,6 +640,127 @@ def get_friends_calories_list(user_id, client: bigquery.Client= None):
640640 sorted_friends_calories_list = sorted_friends_calories_list [:10 ]
641641 return sorted_friends_calories_list
642642
643+ def get_global_distance_list (client : bigquery .Client = None ):
644+ if client is None :
645+ client = bigquery .Client ()
646+ query = client .query ('''
647+ SELECT
648+ Users.Name,
649+ SUM(Workouts.TotalDistance) AS TotalDistance,
650+ Users.UserId
651+ FROM
652+ `diegoperez16techx25`.`Committees`.`Users` AS Users
653+ INNER JOIN
654+ `diegoperez16techx25`.`Committees`.`Workouts` AS Workouts
655+ ON
656+ Users.UserId = Workouts.UserId
657+ GROUP BY
658+ 1, 3
659+ ''' )
660+ results = query .result ()
661+ distance_list = [(row .Name , float (row .TotalDistance ), row .UserId ) for row in results ]
662+ sorted_list = sorted (distance_list , key = lambda item : item [1 ], reverse = True )
663+ return sorted_list [:10 ]
664+
665+ def get_friends_distance_list (user_id , client : bigquery .Client = None ):
666+ if client is None :
667+ client = bigquery .Client ()
668+ query = client .query (f'''
669+ SELECT
670+ Users.Name,
671+ SUM(Workouts.TotalDistance) AS TotalDistance,
672+ Users.UserId
673+ FROM
674+ `diegoperez16techx25`.Committees.Users
675+ INNER JOIN
676+ `diegoperez16techx25`.Committees.Workouts ON Users.UserId = Workouts.UserId
677+ WHERE
678+ Users.UserId = '{ user_id } '
679+ GROUP BY
680+ 1, 3
681+
682+ UNION ALL
683+
684+ SELECT
685+ Users.Name,
686+ SUM(Workouts.TotalDistance) AS TotalDistance,
687+ Users.UserId
688+ FROM
689+ `diegoperez16techx25`.Committees.Users AS Users
690+ INNER JOIN
691+ `diegoperez16techx25`.Committees.Friends AS Friends ON Users.UserId = Friends.friend_id
692+ INNER JOIN
693+ `diegoperez16techx25`.Committees.Workouts AS Workouts ON Users.UserId = Workouts.UserId
694+ WHERE
695+ Friends.user_id = '{ user_id } '
696+ GROUP BY
697+ 1, 3
698+ ''' )
699+ results = query .result ()
700+ distance_list = [(row .Name , float (row .TotalDistance ), row .UserId ) for row in results ]
701+ sorted_list = sorted (distance_list , key = lambda item : item [1 ], reverse = True )
702+ return sorted_list [:10 ]
703+
704+ def get_global_steps_list (client : bigquery .Client = None ):
705+ if client is None :
706+ client = bigquery .Client ()
707+ query = client .query ('''
708+ SELECT
709+ Users.Name,
710+ SUM(Workouts.TotalSteps) AS TotalSteps,
711+ Users.UserId
712+ FROM
713+ `diegoperez16techx25`.`Committees`.`Users` AS Users
714+ INNER JOIN
715+ `diegoperez16techx25`.`Committees`.`Workouts` AS Workouts
716+ ON
717+ Users.UserId = Workouts.UserId
718+ GROUP BY
719+ 1, 3
720+ ''' )
721+ results = query .result ()
722+ steps_list = [(row .Name , int (row .TotalSteps ), row .UserId ) for row in results ]
723+ sorted_list = sorted (steps_list , key = lambda item : item [1 ], reverse = True )
724+ return sorted_list [:10 ]
725+
726+ def get_friends_steps_list (user_id , client : bigquery .Client = None ):
727+ if client is None :
728+ client = bigquery .Client ()
729+ query = client .query (f'''
730+ SELECT
731+ Users.Name,
732+ SUM(Workouts.TotalSteps) AS TotalSteps,
733+ Users.UserId
734+ FROM
735+ `diegoperez16techx25`.Committees.Users
736+ INNER JOIN
737+ `diegoperez16techx25`.Committees.Workouts ON Users.UserId = Workouts.UserId
738+ WHERE
739+ Users.UserId = '{ user_id } '
740+ GROUP BY
741+ 1, 3
742+
743+ UNION ALL
744+
745+ SELECT
746+ Users.Name,
747+ SUM(Workouts.TotalSteps) AS TotalSteps,
748+ Users.UserId
749+ FROM
750+ `diegoperez16techx25`.Committees.Users AS Users
751+ INNER JOIN
752+ `diegoperez16techx25`.Committees.Friends AS Friends ON Users.UserId = Friends.friend_id
753+ INNER JOIN
754+ `diegoperez16techx25`.Committees.Workouts AS Workouts ON Users.UserId = Workouts.UserId
755+ WHERE
756+ Friends.user_id = '{ user_id } '
757+ GROUP BY
758+ 1, 3
759+ ''' )
760+ results = query .result ()
761+ steps_list = [(row .Name , int (row .TotalSteps ), row .UserId ) for row in results ]
762+ sorted_list = sorted (steps_list , key = lambda item : item [1 ], reverse = True )
763+ return sorted_list [:10 ]
643764
644765
645766def create_new_user (username , name , image_url , date_of_birth , password , query_db = bigquery , execute_query = None ):
0 commit comments