71 lines
2.0 KiB
Python
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()
|