From a1ccb8ca029e779470e230b9ce18b7cb5da31bc8 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Wed, 26 Jun 2024 22:22:45 -0700 Subject: milestone api: use closest point to milestone if divisible multiple doesn't exist --- app.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/app.py b/app.py index 785d5fe..f7d7555 100644 --- a/app.py +++ b/app.py @@ -79,24 +79,34 @@ def api_subscribers_channel_7d(channel_name): @app.route("/api/subscribers//milestones") def get_channel_milestones(channel_name): server = create_database_connection() - milestone_multiple = request.args.get("q") - if not milestone_multiple: - milestone_multiple = 10000 + milestone_increment = int(request.args.get("q", 10000)) + initial_milestone = 20000 + current_milestone = initial_milestone query = """ - SELECT name, subscriber_count, MIN(timestamp) + SELECT subscriber_count, MIN(timestamp) FROM subscriber_data_historical - WHERE name = %s AND MOD(subscriber_count, %s) = 0 - GROUP BY name, subscriber_count - ORDER BY subscriber_count, MIN(timestamp) - LIMIT 10 + WHERE name = %s + GROUP BY subscriber_count + ORDER BY subscriber_count ASC """ - data = server.execute_query(query, (channel_name, milestone_multiple,)) + data = server.execute_query(query, (channel_name,)) dates = [] milestones = [] + found_milestone = False for row in data: - date_string = row[2].strftime("%Y-%m-%d") - dates.append(date_string) - milestones.append(row[1]) + subscriber_count = row[0] + while subscriber_count >= current_milestone: + if not found_milestone or subscriber_count == current_milestone: + date_string = row[1].strftime("%Y-%m-%d") + dates.append(date_string) + milestones.append(subscriber_count) + current_milestone += milestone_increment + found_milestone = True + break + else: + current_milestone += milestone_increment + found_milestone = False + return jsonify({"milestones": milestones, "dates": dates}) -- cgit v1.2.3