54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
from flask import Flask
|
|
from models import db, User
|
|
from config import Config
|
|
|
|
|
|
def seed_default_user() -> None:
|
|
"""Create the default local account if it does not exist.
|
|
|
|
Requirement: seed egg/123/念萱 with default role Viewer.
|
|
"""
|
|
default_username = "egg"
|
|
default_password = "123"
|
|
default_name = "念萱"
|
|
|
|
existing = User.query.filter_by(username=default_username).first()
|
|
if existing:
|
|
print(f" - Default user '{default_username}' already exists. Skipping.")
|
|
return
|
|
|
|
user = User(username=default_username, name=default_name, role="viewer")
|
|
user.set_password(default_password)
|
|
db.session.add(user)
|
|
db.session.commit()
|
|
print(f" - Seeded default user {default_username}/{default_password}/{default_name} (role=viewer)")
|
|
|
|
|
|
def init_database(app: Flask) -> None:
|
|
"""Reset schema and seed initial data (DANGEROUS: drops all tables)."""
|
|
with app.app_context():
|
|
print("Initializing database: dropping and recreating tables...")
|
|
db.drop_all()
|
|
db.create_all()
|
|
seed_default_user()
|
|
print("Database initialized successfully.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app = Flask(__name__)
|
|
app.config.from_object(Config)
|
|
db.init_app(app)
|
|
|
|
print("=================================================")
|
|
print(" Database Initialization Utility ")
|
|
print("=================================================")
|
|
print("WARNING: This will DROP and RECREATE all tables in the target database.")
|
|
print("Ensure you have backups before proceeding.")
|
|
|
|
confirmation = input("Type 'yes' to continue (yes/no): ")
|
|
if confirmation.strip().lower() == "yes":
|
|
init_database(app)
|
|
else:
|
|
print("Aborted.")
|
|
|