diff options
| author | Pinapelz <yukais@pinapelz.com> | 2024-06-26 22:22:45 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2024-06-26 22:23:04 -0700 |
| commit | a1ccb8ca029e779470e230b9ce18b7cb5da31bc8 (patch) | |
| tree | f2754f6dde496d27ec9f2ade284b716d8f0dde04 /app.py | |
| parent | 0984bf95711890d54ed6dc59ed95be30fc112cc2 (diff) | |
milestone api: use closest point to milestone if divisible multiple doesn't exist
Diffstat (limited to 'app.py')
| -rw-r--r-- | app.py | 34 |
1 files changed, 22 insertions, 12 deletions
@@ -79,24 +79,34 @@ def api_subscribers_channel_7d(channel_name): @app.route("/api/subscribers/<channel_name>/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}) |
