(conn, challenge_id: str)
| 140 | |
| 141 | |
| 142 | def challenge_stats(conn, challenge_id: str) -> dict: |
| 143 | total_cells = conn.execute( |
| 144 | "SELECT COUNT(*) AS c FROM challenge_cells WHERE challenge_id = ?", |
| 145 | (challenge_id,), |
| 146 | ).fetchone()["c"] |
| 147 | unlocked_cells = conn.execute( |
| 148 | """ |
| 149 | SELECT COUNT(DISTINCT cell_id) AS c |
| 150 | FROM user_unlocked_cells |
| 151 | WHERE challenge_id = ? |
| 152 | """, |
| 153 | (challenge_id,), |
| 154 | ).fetchone()["c"] |
| 155 | participant_count = conn.execute( |
| 156 | """ |
| 157 | SELECT COUNT(DISTINCT participant_id) AS c |
| 158 | FROM user_unlocked_cells |
| 159 | WHERE challenge_id = ? |
| 160 | """, |
| 161 | (challenge_id,), |
| 162 | ).fetchone()["c"] |
| 163 | return { |
| 164 | "total_cells": total_cells, |
| 165 | "unlocked_cells": unlocked_cells, |
| 166 | "participant_count": participant_count, |
| 167 | "progress": round(unlocked_cells / total_cells, 4) if total_cells else 0, |
| 168 | } |
| 169 | |
| 170 | |
| 171 | def public_challenge(conn, row) -> dict: |
no outgoing calls
no test coverage detected