fix: case-insensitive field matching + status migration

This commit is contained in:
2026-06-20 17:50:54 +01:00
parent 6a77649bd8
commit 74e1a9a0f5
+9 -4
View File
@@ -105,6 +105,11 @@ def init_schema(db):
); );
""") """)
db.commit() db.commit()
# Migration: add status column if missing
try:
db.execute("ALTER TABLE submissions ADD COLUMN status TEXT NOT NULL DEFAULT 'received'")
except Exception:
pass
def get_setting(db, key, default=""): def get_setting(db, key, default=""):
row = db.execute("SELECT value FROM settings WHERE key = ?", (key,)).fetchone() row = db.execute("SELECT value FROM settings WHERE key = ?", (key,)).fetchone()
@@ -337,8 +342,8 @@ def check_status(email: str = "", phone: str = ""):
rows = db.execute(""" rows = db.execute("""
SELECT s.id, s.status, s.created_at SELECT s.id, s.status, s.created_at
FROM submissions s FROM submissions s
JOIN submission_data d1 ON d1.submission_id = s.id AND d1.field_label = 'Email' AND d1.field_value = ? JOIN submission_data d1 ON d1.submission_id = s.id AND LOWER(d1.field_label) = 'email' AND d1.field_value = ?
JOIN submission_data d2 ON d2.submission_id = s.id AND d2.field_label = 'Phone' AND d2.field_value = ? JOIN submission_data d2 ON d2.submission_id = s.id AND LOWER(d2.field_label) = 'phone' AND d2.field_value = ?
ORDER BY s.id DESC LIMIT 1 ORDER BY s.id DESC LIMIT 1
""", (email.strip(), phone.strip())).fetchall() """, (email.strip(), phone.strip())).fetchall()
db.close() db.close()
@@ -358,8 +363,8 @@ def delete_submission(email: str = "", phone: str = ""):
rows = db.execute(""" rows = db.execute("""
SELECT s.id SELECT s.id
FROM submissions s FROM submissions s
JOIN submission_data d1 ON d1.submission_id = s.id AND d1.field_label = 'Email' AND d1.field_value = ? JOIN submission_data d1 ON d1.submission_id = s.id AND LOWER(d1.field_label) = 'email' AND d1.field_value = ?
JOIN submission_data d2 ON d2.submission_id = s.id AND d2.field_label = 'Phone' AND d2.field_value = ? JOIN submission_data d2 ON d2.submission_id = s.id AND LOWER(d2.field_label) = 'phone' AND d2.field_value = ?
ORDER BY s.id DESC LIMIT 1 ORDER BY s.id DESC LIMIT 1
""", (email.strip(), phone.strip())).fetchall() """, (email.strip(), phone.strip())).fetchall()
if not rows: if not rows: