@@ -1240,3 +1240,59 @@ def aggregate_summary(repo_group_id, repo_id=None, begin_date=None, end_date=Non
12401240 results = pd .read_sql (summarySQL , conn , params = {'repo_id' : repo_id ,
12411241 'begin_date' : begin_date , 'end_date' : end_date })
12421242 return results
1243+
1244+ @register_metric ()
1245+ def clones (repo_group_id , repo_id = None , begin_date = None , end_date = None ):
1246+ """
1247+ Returns the number of repository clones (total and unique) for a given repo or repo group.
1248+ :param repo_group_id: The repository's repo_group_id
1249+ :param repo_id: The repository's repo_id, defaults to None
1250+ :param begin_date: Start date for filtering clone data (optional)
1251+ :param end_date: End date for filtering clone data (optional)
1252+ :return: DataFrame of clone counts (total and unique) per day
1253+ """
1254+ if not begin_date :
1255+ begin_date = '1970-1-1 00:00:00'
1256+ if not end_date :
1257+ end_date = datetime .datetime .now ().strftime ('%Y-%m-%d %H:%M:%S' )
1258+
1259+ if repo_id :
1260+ clones_sql = s .sql .text ("""
1261+ SELECT
1262+ repo_id,
1263+ clone_data_timestamp AS date,
1264+ count_clones AS total_clones,
1265+ unique_clones
1266+ FROM augur_data.repo_clones_data
1267+ WHERE repo_id = :repo_id
1268+ AND clone_data_timestamp BETWEEN :begin_date AND :end_date
1269+ ORDER BY clone_data_timestamp
1270+ """ )
1271+ with current_app .engine .connect () as conn :
1272+ results = pd .read_sql (clones_sql , conn , params = {
1273+ 'repo_id' : repo_id ,
1274+ 'begin_date' : begin_date ,
1275+ 'end_date' : end_date
1276+ })
1277+ return results
1278+ else :
1279+ clones_sql = s .sql .text ("""
1280+ SELECT
1281+ repo_id,
1282+ clone_data_timestamp AS date,
1283+ count_clones AS total_clones,
1284+ unique_clones
1285+ FROM augur_data.repo_clones_data
1286+ WHERE repo_id IN (
1287+ SELECT repo_id FROM augur_data.repo WHERE repo_group_id = :repo_group_id
1288+ )
1289+ AND clone_data_timestamp BETWEEN :begin_date AND :end_date
1290+ ORDER BY repo_id, clone_data_timestamp
1291+ """ )
1292+ with current_app .engine .connect () as conn :
1293+ results = pd .read_sql (clones_sql , conn , params = {
1294+ 'repo_group_id' : repo_group_id ,
1295+ 'begin_date' : begin_date ,
1296+ 'end_date' : end_date
1297+ })
1298+ return results
0 commit comments