import sqlite3 import json from datetime import datetime DB_PATH = 'lead-engine/data/leads.db' def init_db(): conn = sqlite3.connect(DB_PATH) c = conn.cursor() c.execute(''' CREATE TABLE IF NOT EXISTS leads ( id INTEGER PRIMARY KEY AUTOINCREMENT, source_id TEXT UNIQUE, received_at TIMESTAMP, company_name TEXT, contact_name TEXT, email TEXT, phone TEXT, raw_body TEXT, enrichment_data TEXT, status TEXT DEFAULT 'new', response_draft TEXT, sent_at TIMESTAMP ) ''') conn.commit() conn.close() def insert_lead(lead_data): conn = sqlite3.connect(DB_PATH) c = conn.cursor() try: c.execute(''' INSERT INTO leads (source_id, received_at, company_name, contact_name, email, phone, raw_body, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ''', ( lead_data.get('id'), datetime.now(), lead_data.get('company'), lead_data.get('contact'), lead_data.get('email'), lead_data.get('phone'), lead_data.get('raw_body'), 'new' )) conn.commit() return True except sqlite3.IntegrityError: return False finally: conn.close() def get_leads(): conn = sqlite3.connect(DB_PATH) conn.row_factory = sqlite3.Row c = conn.cursor() c.execute('SELECT * FROM leads ORDER BY received_at DESC') rows = c.fetchall() conn.close() return [dict(row) for row in rows] def update_lead_status(lead_id, status, response_draft=None): conn = sqlite3.connect(DB_PATH) c = conn.cursor() if response_draft: c.execute('UPDATE leads SET status = ?, response_draft = ? WHERE id = ?', (status, response_draft, lead_id)) else: c.execute('UPDATE leads SET status = ? WHERE id = ?', (status, lead_id)) conn.commit() conn.close()