Research-Stack/5-Applications/scripts/create_affirm_db.py

146 lines
8 KiB
Python

import sqlite3
import json
import os
# Data from the browser subagent (Current + Past)
data = {
"current_loans": [
{ "merchant": "Amazon", "amount_due": "$47.04", "due_date": "May 28" },
{ "merchant": "Amazon", "amount_due": "$23.10", "due_date": "Jun 2" },
{ "merchant": "Mint Mobile", "amount_due": "$36.16", "due_date": "Jun 3" },
{ "merchant": "Wolfram Alpha", "amount_due": "$10.55", "due_date": "Jun 10" },
{ "merchant": "Walmart", "amount_due": "$13.41", "due_date": "Jun 11" },
{ "merchant": "vitalrecords", "amount_due": "$11.05", "due_date": "Jun 13" },
{ "merchant": "Mint Mobile", "amount_due": "$10.05", "due_date": "Jun 13" },
{ "merchant": "msi", "amount_due": "$31.34", "due_date": "Jun 14" },
{ "merchant": "eBay", "amount_due": "$11.30", "due_date": "Jun 16" },
{ "merchant": "Agoda.com", "amount_due": "$24.25", "due_date": "Jun 16" },
{ "merchant": "Newegg", "amount_due": "$12.85", "due_date": "Jun 18" },
{ "merchant": "Kimi.com", "amount_due": "$37.67", "due_date": "Jun 21" },
{ "merchant": "Amazon", "amount_due": "$21.25", "due_date": "Jun 21" },
{ "merchant": "Affirm Virtual Card", "amount_due": "$33.58", "due_date": "Jun 22" },
{ "merchant": "Amazon", "amount_due": "$14.24", "due_date": "Jun 23" },
{ "merchant": "Walmart", "amount_due": "$12.06", "due_date": "Jun 26" },
{ "merchant": "Northwest Registered Agents", "amount_due": "$16.58", "due_date": "Jun 27" }
],
"past_loans": [
{ "merchant": "Newegg", "amount": "$101.63", "date": "Apr 28, 2026", "status": "Paid" },
{ "merchant": "Amazon", "amount": "$95.14", "date": "Apr 28, 2026", "status": "Paid" },
{ "merchant": "Amazon", "amount": "$796.97", "date": "Apr 2, 2026", "status": "Paid" },
{ "merchant": "Affirm", "amount": "$45.00", "date": "Apr 2, 2026", "status": "Paid" },
{ "merchant": "Uber", "amount": "$100.00", "date": "Apr 2, 2026", "status": "Paid" },
{ "merchant": "Groupon", "amount": "$140.00", "date": "Feb 26, 2026", "status": "Paid" },
{ "merchant": "Amazon", "amount": "$172.29", "date": "Feb 26, 2026", "status": "Paid" },
{ "merchant": "DoorDash", "amount": "$60.00", "date": "Feb 12, 2026", "status": "Paid" },
{ "merchant": "Priceline", "amount": "$92.00", "date": "Dec 29, 2025", "status": "Paid" },
{ "merchant": "amazons", "amount": "$86.00", "date": "Dec 27, 2025", "status": "Paid" },
{ "merchant": "Expedia", "amount": "$93.95", "date": "Dec 27, 2025", "status": "Paid" },
{ "merchant": "Newegg", "amount": "$440.69", "date": "Sep 22, 2025", "status": "Paid" },
{ "merchant": "It's A 10", "amount": "$65.00", "date": "Aug 9, 2025", "status": "Paid" },
{ "merchant": "Best Buy", "amount": "$670.00", "date": "Jun 30, 2025", "status": "Paid" },
{ "merchant": "amazons", "amount": "$144.00", "date": "May 29, 2025", "status": "Paid" },
{ "merchant": "Amazon", "amount": "$135.76", "date": "Mar 15, 2025", "status": "Paid" },
{ "merchant": "Amazon", "amount": "$171.08", "date": "Feb 26, 2025", "status": "Paid" },
{ "merchant": "Amazon", "amount": "$96.30", "date": "Jan 31, 2025", "status": "Paid" },
{ "merchant": "Newegg", "amount": "$1,891.90", "date": "Jan 9, 2025", "status": "Paid" },
{ "merchant": "Zenni", "amount": "$78.99", "date": "Sep 5, 2024", "status": "Paid" },
{ "merchant": "Ames Lock", "amount": "$250.00", "date": "Jul 18, 2024", "status": "Paid" },
{ "merchant": "Amazon", "amount": "$94.15", "date": "Feb 23, 2024", "status": "Paid" },
{ "merchant": "Newegg", "amount": "$266.42", "date": "Dec 14, 2023", "status": "Paid" },
{ "merchant": "Younits", "amount": "$889.99", "date": "Nov 10, 2015", "status": "Refunded" }
],
"selected_loan_history": [
{ "date": "Jun 27, 2024", "amount": "$1,047.22", "description": "Processed" },
{ "date": "Jul 27, 2024", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Aug 28, 2024", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Sep 28, 2024", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Oct 28, 2024", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Nov 27, 2024", "amount": "-$47.04", "payment_method": "Bank Account •••• 9161" },
{ "date": "Dec 25, 2024", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Jan 27, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Feb 26, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Mar 15, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 3166" },
{ "date": "Apr 25, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 9388" },
{ "date": "May 24, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Jun 30, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Jul 28, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Sep 25, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Sep 25, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Oct 25, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Nov 24, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Dec 27, 2025", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Jan 6, 2026", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Feb 4, 2026", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Mar 29, 2026", "amount": "-$47.04", "payment_method": "Visa •••• 7078" },
{ "date": "Apr 28, 2026", "amount": "-$47.04", "payment_method": "Visa •••• 7078" }
]
}
# Use absolute paths
base_dir = "/home/allaun/Research Stack"
os.makedirs(os.path.join(base_dir, "data"), exist_ok=True)
db_path = os.path.join(base_dir, "shared-data/data/affirm_accounts.db")
json_path = os.path.join(base_dir, "shared-data/data/affirm_accounts.json")
# Connect to SQLite
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# Drop tables to start fresh with new schema
cursor.execute('DROP TABLE IF EXISTS transactions')
cursor.execute('DROP TABLE IF EXISTS loans')
# Create tables with status
cursor.execute('''
CREATE TABLE IF NOT EXISTS loans (
id INTEGER PRIMARY KEY AUTOINCREMENT,
merchant TEXT,
amount TEXT,
date_info TEXT,
status TEXT
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
loan_id INTEGER,
date TEXT,
amount TEXT,
payment_method TEXT,
description TEXT,
FOREIGN KEY (loan_id) REFERENCES loans (id)
)
''')
# Insert current loans
for loan in data["current_loans"]:
cursor.execute('INSERT INTO loans (merchant, amount, date_info, status) VALUES (?, ?, ?, ?)',
(loan["merchant"], loan["amount_due"], loan["due_date"], "Active"))
# Insert past loans
for loan in data["past_loans"]:
cursor.execute('INSERT INTO loans (merchant, amount, date_info, status) VALUES (?, ?, ?, ?)',
(loan["merchant"], loan["amount"], loan["date"], loan["status"]))
# Find the ID of the Amazon loan with $47.04 amount (Active)
cursor.execute('SELECT id FROM loans WHERE merchant = "Amazon" AND amount = "$47.04" AND status = "Active" LIMIT 1')
amazon_loan_id = cursor.fetchone()[0]
# Insert transactions for the active Amazon loan
for tx in data["selected_loan_history"]:
cursor.execute('''
INSERT INTO transactions (loan_id, date, amount, payment_method, description)
VALUES (?, ?, ?, ?, ?)
''', (amazon_loan_id, tx["date"], tx["amount"], tx.get("payment_method", ""), tx.get("description", "")))
conn.commit()
conn.close()
# Save updated JSON
with open(json_path, "w") as f:
json.dump(data, f, indent=2)
print(f"Updated database at {db_path} with closed accounts.")
print(f"Updated JSON data at {json_path}")