Add waiting system application files
- Add main application files (main.py, models.py, schemas.py, etc.) - Add routers for all features (waiting, attendance, members, etc.) - Add HTML templates for admin and user interfaces - Add migration scripts and utility files - Add Docker configuration - Add documentation files - Add .gitignore to exclude database and cache files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
59
verify_ranking_index.py
Normal file
59
verify_ranking_index.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import sqlite3
|
||||
import os
|
||||
from datetime import date
|
||||
|
||||
DB_PATH = 'waiting_system.db'
|
||||
|
||||
def verify_query_plan():
|
||||
if not os.path.exists(DB_PATH):
|
||||
print(f"Database file '{DB_PATH}' not found.")
|
||||
return
|
||||
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Query from routers/statistics.py get_attendance_ranking logic
|
||||
# Simplified for EXPLAIN query
|
||||
|
||||
# We want to see if it uses the indices: ix_waiting_list_status, ix_waiting_list_attended_at, ix_waiting_list_member_id
|
||||
sql = """
|
||||
EXPLAIN QUERY PLAN
|
||||
SELECT
|
||||
m.id, m.name, m.phone, s.name, count(w.id), max(w.attended_at)
|
||||
FROM
|
||||
members m
|
||||
JOIN
|
||||
waiting_list w ON m.id = w.member_id
|
||||
JOIN
|
||||
store s ON w.store_id = s.id
|
||||
WHERE
|
||||
w.status = 'attended'
|
||||
AND w.attended_at BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59'
|
||||
GROUP BY
|
||||
m.id, m.name, m.phone, s.name
|
||||
ORDER BY
|
||||
count(w.id) DESC
|
||||
"""
|
||||
|
||||
print("Executing EXPLAIN QUERY PLAN...")
|
||||
try:
|
||||
cursor.execute(sql)
|
||||
rows = cursor.fetchall()
|
||||
for row in rows:
|
||||
print(row)
|
||||
|
||||
# Check against expected usage
|
||||
# We look for "USING INDEX" and the index names
|
||||
output = str(rows)
|
||||
if "ix_waiting_list_status" in output or "ix_waiting_list_attended_at" in output or "ix_waiting_list_member_id" in output:
|
||||
print("\nSUCCESS: Query is using the new indexes.")
|
||||
else:
|
||||
print("\nWARNING: Query might NOT be using the new indexes explicitly in the plan (SQLite might optimize differently). Check output detail.")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
verify_query_plan()
|
||||
Reference in New Issue
Block a user