v0.1.1 -
feat: collector task checklist. chore: docs updated, gitignore updated. Docs: TARKOV_DEV_API.md fully explains tarkov.dev's api for future coding agents and forgetful people llike me.
This commit is contained in:
47
app.py
47
app.py
@@ -194,5 +194,52 @@ def rate_all():
|
||||
return redirect(base_url)
|
||||
|
||||
|
||||
@app.route("/collector")
|
||||
def collector():
|
||||
conn = get_db()
|
||||
collector = conn.execute(
|
||||
"SELECT id FROM quests WHERE name = 'Collector'"
|
||||
).fetchone()
|
||||
|
||||
if not collector:
|
||||
conn.close()
|
||||
return "Run import_quests.py first to populate quest data.", 503
|
||||
|
||||
# Recursive CTE to get all transitive prerequisites
|
||||
prereqs = conn.execute("""
|
||||
WITH RECURSIVE deps(quest_id) AS (
|
||||
SELECT depends_on FROM quest_deps WHERE quest_id = ?
|
||||
UNION
|
||||
SELECT qd.depends_on FROM quest_deps qd
|
||||
JOIN deps d ON qd.quest_id = d.quest_id
|
||||
)
|
||||
SELECT q.id, q.name, q.trader, q.wiki_link,
|
||||
COALESCE(qp.done, 0) AS done
|
||||
FROM quests q
|
||||
JOIN deps d ON q.id = d.quest_id
|
||||
LEFT JOIN quest_progress qp ON q.id = qp.quest_id
|
||||
ORDER BY q.trader, q.name
|
||||
""", (collector["id"],)).fetchall()
|
||||
|
||||
conn.close()
|
||||
total = len(prereqs)
|
||||
done = sum(1 for q in prereqs if q["done"])
|
||||
return render_template("collector.html", quests=prereqs, total=total, done=done)
|
||||
|
||||
|
||||
@app.route("/collector/toggle", methods=["POST"])
|
||||
def collector_toggle():
|
||||
quest_id = request.form["quest_id"]
|
||||
done = 1 if request.form.get("done") == "1" else 0
|
||||
conn = get_db()
|
||||
conn.execute("""
|
||||
INSERT INTO quest_progress (quest_id, done) VALUES (?, ?)
|
||||
ON CONFLICT(quest_id) DO UPDATE SET done = excluded.done
|
||||
""", (quest_id, done))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
return redirect(url_for("collector"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=5000, debug=True)
|
||||
|
||||
Reference in New Issue
Block a user