52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
import sys
|
|
import os
|
|
|
|
# Add the current directory to sys.path to ensure we can import 'backend'
|
|
sys.path.append(os.getcwd())
|
|
|
|
from backend.database import SessionLocal, engine
|
|
from backend import models
|
|
|
|
def dump_table(session, model, table_name):
|
|
print(f"\n{'='*20} {table_name} {'='*20}")
|
|
records = session.query(model).all()
|
|
|
|
if not records:
|
|
print("(No data found)")
|
|
return
|
|
|
|
# Get column names
|
|
columns = [c.name for c in model.__table__.columns]
|
|
|
|
# Calculate widths for nice formatting (simple approach)
|
|
widths = {col: len(col) for col in columns}
|
|
for r in records:
|
|
for col in columns:
|
|
val = str(getattr(r, col))
|
|
widths[col] = max(widths[col], len(val))
|
|
|
|
# Header
|
|
header = " | ".join(f"{col:<{widths[col]}}" for col in columns)
|
|
print(header)
|
|
print("-" * len(header))
|
|
|
|
# Rows
|
|
for r in records:
|
|
row = " | ".join(f"{str(getattr(r, col)):<{widths[col]}}" for col in columns)
|
|
print(row)
|
|
print(f"Total: {len(records)} records")
|
|
|
|
def main():
|
|
db = SessionLocal()
|
|
try:
|
|
dump_table(db, models.User, "Users")
|
|
dump_table(db, models.Challenge, "Challenges")
|
|
dump_table(db, models.Tracking, "Tracking Logs")
|
|
dump_table(db, models.DailyHealthMetrics, "Daily Health Metrics")
|
|
dump_table(db, models.WorkoutSession, "Workout Sessions")
|
|
finally:
|
|
db.close()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|