(feat): Created admin database.py

This commit is contained in:
Blake Ridgway 2025-02-12 13:00:01 -06:00
parent 9bc4d87938
commit a8d2f7b798

65
database.py Normal file
View file

@ -0,0 +1,65 @@
import sqlite3
import os
from dotenv import load_dotenv
from werkzeug.security import generate_password_hash, check_password_hash
load_dotenv()
DATABASE_URL = os.getenv("DATABASE_URL")
def init_db():
with sqlite3.connect(DATABASE_URL, timeout=10) as conn:
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS subscribers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT UNIQUE NOT NULL)
""")
cursor.execute("""
CREATE TABLE IF NOT EXISTS admin_users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
password TEXT NOT NULL
)
""")
conn.commit()
def get_all_emails():
try:
with sqlite3.connect(DATABASE_URL, timeout=10) as conn:
cursor = conn.cursor()
cursor.execute("SELECT email FROM subscribers")
results = cursor.fetchall()
return [row[0] for row in results]
except Exception as e:
print(f"Error: {e}")
return []
def get_admin(username):
try:
with sqlite3.connect(DATABASE_URL, timeout=10) as conn:
cursor = conn.cursor()
cursor.execute("SELECT username FROM admin_users WHERE username=?", (username,))
results = cursor.fetchone()
except Exception as e:
print(f"Error: {e}")
return None
def create_default_admin():
default_username = os.getenv("DEFAULT_ADMIN_USERNAME")
default_password = os.getenv("DEFAULT_ADMIN_PASSWORD")
hashed = generate_password_hash(default_password, method='sha256')
try:
with sqlite3.connect(DATABASE_URL, timeout=10) as conn:
cursor = conn.cursor()
cursor.execute("SELECT id FROM admin_users WHERE username = ?", (default_username,))
if cursor.fetchone() is not None:
cursor.execute("INSERT INTO admin_users (username, password) VALUES (?, ?)",
(default_username, hashed))
conn.commit()
print("Admin user created successfully")
else:
print("Admin user creation failed")
except Exception as e:
print(f"Error: {e}")