Files
hackathon-v-escape-4ff8b5a6…/backend/restore_db.py
marianesaldana 80dbd947e5 Initial commit
2026-05-23 08:59:34 -06:00

112 lines
3.1 KiB
Python

"""
Restaura la base de datos desde database_dump.sql.
Uso (en cualquier máquina):
cd backend
python restore_db.py
Esto:
1. Borra mi_ruta_limpia.db si existe
2. Lee database_dump.sql
3. Crea una BD SQLite nueva idéntica a la original
4. Verifica conteos de registros
Resultado:
- 202 usuarios (185 ciudadanos, 14 empleados, 3 admins)
- 302 domicilios con rutas asignadas
- 280 reportes ciudadanos
- 150 reportes operativos
- 220 calificaciones de servicio
- 62 camiones de la flotilla
Credenciales demo:
- demo@celaya.gob.mx / Celaya2026 (CIUDADANO)
- empleado@celaya.gob.mx / Empleado2026 (EMPLEADO)
- admin@celaya.gob.mx / Admin2026 (ADMIN)
"""
import os
import sqlite3
import sys
DB_FILE = "mi_ruta_limpia.db"
DUMP_FILE = "database_dump.sql"
def main():
# Verificar que existe el dump
if not os.path.exists(DUMP_FILE):
print(f"✗ ERROR: no se encontró '{DUMP_FILE}' en este directorio.")
print(f" Asegúrate de estar parado en backend/ y que el archivo esté ahí.")
sys.exit(1)
# Borrar BD existente si la hay
if os.path.exists(DB_FILE):
print(f"⚠ La base de datos '{DB_FILE}' ya existe. Borrándola para restaurar limpio...")
os.remove(DB_FILE)
# Crear nueva BD ejecutando el dump
print(f"📥 Restaurando desde '{DUMP_FILE}'...")
conn = sqlite3.connect(DB_FILE)
with open(DUMP_FILE, "r", encoding="utf-8") as f:
sql = f.read()
conn.executescript(sql)
conn.commit()
# Verificar conteos
cursor = conn.cursor()
expected = {
"users": 202,
"addresses": 302,
"reports": 280,
"operational_reports": 150,
"service_ratings": 220,
"trucks": 62,
}
print("\n📊 Verificación de tablas:")
all_ok = True
for table, exp_count in expected.items():
try:
cursor.execute(f"SELECT COUNT(*) FROM {table}")
n = cursor.fetchone()[0]
ok = "" if n == exp_count else ""
print(f" {ok} {table:25} {n:>4}/{exp_count}")
if n != exp_count:
all_ok = False
except sqlite3.OperationalError as e:
print(f"{table:25} ERROR: {e}")
all_ok = False
conn.close()
# Resumen
print()
print("" * 60)
if all_ok:
print(" ✅ BASE DE DATOS RESTAURADA EXITOSAMENTE")
else:
print(" ⚠ RESTAURACIÓN COMPLETADA CON DIFERENCIAS")
print("" * 60)
print()
print(" Credenciales demo para probar la app:")
print()
print(" 🧑 CIUDADANO")
print(" Email: demo@celaya.gob.mx")
print(" Contraseña: Celaya2026")
print()
print(" 👮 EMPLEADO")
print(" Email: empleado@celaya.gob.mx")
print(" Contraseña: Empleado2026")
print()
print(" 🛡️ ADMINISTRADOR")
print(" Email: admin@celaya.gob.mx")
print(" Contraseña: Admin2026")
print()
print(" Ya puedes arrancar el backend con:")
print(" uvicorn main:app --reload --host 0.0.0.0 --port 8000")
print()
if __name__ == "__main__":
main()