Skip to content

Commit c5eeb07

Browse files
authored
Merge pull request #3247 from saksham23467/fix/clones-metric-api
Add Clones metric API (#2604)
2 parents 0d53302 + cd87f5c commit c5eeb07

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

augur/api/metrics/repo_meta.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)