pipisa-exporter/exporto.py
hopelessjames 639e5ecc2e
All checks were successful
continuous-integration/drone/push Build is passing
Пофиксил метрику
2023-06-22 17:37:13 +10:00

60 lines
1.6 KiB
Python

from sqlalchemy import create_engine, Integer, String, BIGINT, Column, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import select, update
from sql_db_data import *
from flask import Flask
app = Flask(__name__)
def get_top_dicks():
session = Session()
top = session.query(User.user_fullname, UserDick.dick_size, User.user_id, UserDick.chat_id).join(UserDick).order_by(UserDick.dick_size.desc()).all()
session.close()
return top
@app.route('/metrics')
def metrics():
metrics = ""
docks = get_top_dicks()
# текущий размер пипис
for dick in docks:
metrics += 'pipisio{user="%s", user_id="%s", chat_id="%s"} %s\n' % (dick[0], dick[2], dick[3], dick[1])
# расстояние до следующего впереди
for k in range(len(docks)):
### не самый красивый код для не самой красивой ситуации
if k == 0:
metrics += 'pipisio_topdick_distanso{user="%s", user_id="%s", chat_id="%s"} %s\n' % (docks[k][0], docks[k][2], docks[k][3], 0)
else:
i = k - 1
upper_dick_size = docks[i][1]
while i > 0 and upper_dick_size == docks[k][1]:
i -= 1
upper_dick_size = docks[i][1]
metrics += 'pipisio_topdick_distanso{user="%s", user_id="%s", chat_id="%s"} %s\n' % (docks[k][0], docks[k][2], docks[k][3], (upper_dick_size - docks[k][1]))
return metrics
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9992)
engine.dispose()