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:
serversdwn
2026-02-21 09:41:06 +00:00
parent 7fa00d731c
commit 68005b1cb0
10 changed files with 943 additions and 14 deletions

47
app.py
View File

@@ -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)