Files
gatehouse-api/scripts/init_db.py
T

39 lines
1.0 KiB
Python
Raw Normal View History

2026-01-08 01:00:26 +10:30
"""Initialize database script."""
2026-01-15 03:40:29 +10:30
from gatehouse_app import create_app
from gatehouse_app.extensions import db
2026-03-05 11:35:09 +05:45
from sqlalchemy import text
2026-01-08 01:00:26 +10:30
from dotenv import load_dotenv
2026-03-05 11:35:09 +05:45
import os
import time
2026-01-08 01:00:26 +10:30
# Load environment variables
load_dotenv()
# Create application
app = create_app()
2026-03-05 11:35:09 +05:45
import gatehouse_app.models
2026-01-08 01:00:26 +10:30
with app.app_context():
2026-03-05 11:35:09 +05:45
# Drop all tables, constraints, and indexes cleanly
db_url = os.getenv("DATABASE_URL", "")
db_name = db_url.split("/")[-1] if db_url else "gatehouse_db"
print(f"⚠️ WARNING: About to drop all tables in database '{db_name}'!")
print("Countdown to deletion:")
for i in range(5, 0, -1):
print(f"{i}...")
time.sleep(1)
if db_url.startswith("sqlite"):
db.drop_all()
else:
db.session.execute(text("DROP SCHEMA public CASCADE"))
db.session.execute(text("CREATE SCHEMA public"))
2026-03-05 11:35:09 +05:45
db.session.commit()
2026-01-08 01:00:26 +10:30
# Create all tables
print("Creating all tables...")
db.create_all()
print("Database initialized successfully!")