From a8d2f7b79885a975867a04a46cd87b6dbdd78fd3 Mon Sep 17 00:00:00 2001 From: Blake Ridgway Date: Wed, 12 Feb 2025 13:00:01 -0600 Subject: [PATCH] (feat): Created admin database.py --- database.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 database.py diff --git a/database.py b/database.py new file mode 100644 index 0000000..686e9f9 --- /dev/null +++ b/database.py @@ -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}") \ No newline at end of file