Files
lead-engine-mvp/db.py
2026-01-30 11:00:44 +00:00

71 lines
2.0 KiB
Python

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