Actualizacion de mejoras

This commit is contained in:
2026-05-23 08:36:15 -06:00
parent ebce0badde
commit 8fe3665ffb
11 changed files with 738 additions and 291 deletions

View File

@@ -12,7 +12,7 @@ class DbHelper {
static Future<Database> _initDb() async {
final path = join(await getDatabasesPath(), 'celaya_v3.db');
return openDatabase(path, version: 2,
return openDatabase(path, version: 3,
onCreate: _onCreate, onUpgrade: _onUpgrade);
}
@@ -108,19 +108,27 @@ class DbHelper {
// Migración incremental — se ejecuta al actualizar la app
static Future<void> _onUpgrade(Database db, int oldV, int newV) async {
// Agregar columnas/tablas que pueden faltar en instalaciones anteriores
final helpers = [
// foto_path en reportes
// Lista de migraciones seguras (todas usan IF NOT EXISTS o ignoran errores)
final sqls = [
// Columnas que pueden faltar
"ALTER TABLE reportes ADD COLUMN foto_path TEXT",
// Tablas nuevas (IF NOT EXISTS para no fallar si ya existen)
// Tabla reviews (puede no existir en instalaciones viejas)
'''CREATE TABLE IF NOT EXISTS reviews(
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL, colonia TEXT NOT NULL,
route_id TEXT NOT NULL, estrellas INTEGER NOT NULL,
comentario TEXT NOT NULL, fecha TEXT NOT NULL,
nombre_usuario TEXT DEFAULT 'Ciudadano')''',
// Tabla user_meta
'''CREATE TABLE IF NOT EXISTS user_meta(
user_id INTEGER PRIMARY KEY, activo INTEGER DEFAULT 1, notas TEXT)''',
// Tabla notification_history
'''CREATE TABLE IF NOT EXISTS notification_history(
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER, route_id TEXT NOT NULL,
event_type TEXT NOT NULL, title TEXT NOT NULL,
body TEXT NOT NULL, fecha TEXT NOT NULL,
leida INTEGER DEFAULT 0)''',
'''CREATE TABLE IF NOT EXISTS user_meta(
user_id INTEGER PRIMARY KEY, activo INTEGER DEFAULT 1, notas TEXT)''',
body TEXT NOT NULL, fecha TEXT NOT NULL, leida INTEGER DEFAULT 0)''',
// Tablas de gestión de reportes
'''CREATE TABLE IF NOT EXISTS reporte_notas(
id INTEGER PRIMARY KEY AUTOINCREMENT,
reporte_id INTEGER NOT NULL, admin_id INTEGER NOT NULL,
@@ -134,6 +142,7 @@ class DbHelper {
reporte_id INTEGER NOT NULL, user_id INTEGER NOT NULL,
rol TEXT NOT NULL, mensaje TEXT NOT NULL,
fecha TEXT NOT NULL, leido INTEGER DEFAULT 0)''',
// Tabla route_definitions
'''CREATE TABLE IF NOT EXISTS route_definitions(
id INTEGER PRIMARY KEY AUTOINCREMENT,
route_id TEXT UNIQUE NOT NULL, nombre TEXT NOT NULL,
@@ -141,9 +150,8 @@ class DbHelper {
hora_fin TEXT NOT NULL, turno TEXT NOT NULL,
colonias TEXT NOT NULL, activa INTEGER DEFAULT 1)''',
];
for (final sql in helpers) {
for (final sql in sqls) {
try { await db.execute(sql); } catch (_) {}
// Ignorar errores (ej. columna ya existe)
}
}