from flask import request def gen_poll(db): # Get the client position req = int(request.args.get('head',1)) # Find the maximum message number. t = db.execute("SELECT max(id) FROM comments").fetchone() if t[0] is None: head = 1 else: head = t[0] + 1 # Find the minium start = max(1, req, head-10) # Fetch the messages. t = db.execute("SELECT * FROM comments " + f"WHERE {start} <= id and id < {head} ORDER BY id") handles = [] messages = [] for row in t: handles += [ row[1] ] messages += [ row[2] ] return { "head": head, "messages": messages, "ids": handles } def mk_poll(app): @app.route("/poll") def poll(): from . import db return gen_poll(db.get_db())