Files
ircquotes/create_fresh_db.py
ComputerTech312 cd27cc8ad9 Major refactor: Fix SQLite concurrency, remove rate limiting, simplify architecture
- Switch to single Gunicorn worker to eliminate SQLite database locking issues
- Remove Flask-Limiter and all rate limiting complexity
- Remove Cloudflare proxy setup and dependencies
- Simplify configuration and remove unnecessary features
- Update all templates and static files for streamlined operation
- Clean up old files and documentation
- Restore stable database from backup
- System now runs fast and reliably without database locks
2025-09-21 19:45:08 +01:00

77 lines
2.4 KiB
Python

#!/usr/bin/env python3
"""Create a fresh quotes database with test data"""
import os
import sqlite3
from datetime import datetime
# Remove existing database files
db_files = ['instance/quotes.db', 'instance/quotes.db-shm', 'instance/quotes.db-wal']
for db_file in db_files:
if os.path.exists(db_file):
os.remove(db_file)
print(f"Removed {db_file}")
# Create fresh database
conn = sqlite3.connect('instance/quotes.db')
cursor = conn.cursor()
# Create the quote table with proper schema
cursor.execute("""
CREATE TABLE quote (
id INTEGER PRIMARY KEY AUTOINCREMENT,
text TEXT NOT NULL,
votes INTEGER DEFAULT 0,
date DATETIME,
status INTEGER DEFAULT 0,
ip_address TEXT,
user_agent TEXT,
submitted_at DATETIME,
flag_count INTEGER DEFAULT 0
)
""")
# Create indexes for performance
cursor.execute("CREATE INDEX idx_status_id ON quote(status, id)")
cursor.execute("CREATE INDEX idx_flag_count_id ON quote(flag_count, id)")
# Insert test data
test_quotes = [
("This is a pending quote for testing moderation", 0, 0), # pending
("This is an approved quote that should appear in browse", 5, 1), # approved
("Another approved quote with positive votes", 12, 1), # approved
("A rejected quote that was not good enough", -2, 2), # rejected
("Another pending quote to test approve/reject", 0, 0), # pending
("Third pending quote for comprehensive testing", 0, 0), # pending
]
current_time = datetime.now()
for i, (text, votes, status) in enumerate(test_quotes, 1):
cursor.execute("""
INSERT INTO quote (text, votes, status, submitted_at, ip_address, user_agent, flag_count)
VALUES (?, ?, ?, ?, ?, ?, ?)
""", (text, votes, status, current_time, '127.0.0.1', 'Test Script', 0))
# Set WAL mode for better concurrency
cursor.execute("PRAGMA journal_mode=WAL")
cursor.execute("PRAGMA busy_timeout=1000")
# Commit and close
conn.commit()
# Verify the data
cursor.execute("SELECT id, text, status FROM quote ORDER BY id")
results = cursor.fetchall()
print("\nCreated fresh database with test quotes:")
print("ID | Status | Text")
print("-" * 50)
for quote_id, text, status in results:
status_name = {0: "PENDING", 1: "APPROVED", 2: "REJECTED"}[status]
print(f"{quote_id:2d} | {status_name:8s} | {text[:40]}...")
conn.close()
print(f"\nFresh database created successfully!")
print(f"Total quotes: {len(test_quotes)}")
print("3 pending, 2 approved, 1 rejected")