Descripción tablas y campos
Tabla: users
usersFunción: Almacena la información de los usuarios registrados en el sistema.
Campos:
uid(String, PK): Identificador único proporcionado por Firebase.username(String): Nombre de usuario.email(String): Correo electrónico.phone(String, nullable): Número de teléfono.role(String): Rol del usuario (por defecto "USER").created_at(Date): Fecha de creación del usuario.is_premium(Boolean): Indica si el usuario tiene cuenta premium.
Tabla: profile_images
profile_imagesFunción: Almacena la URL de la imagen de perfil asociada a cada usuario.
Campos:
id(Long, PK): Identificador único.image_url(String): URL de la imagen.uploaded_at(DateTime): Fecha de subida de la imagen.user_id(String, FK): Referencia al usuario propietario.
Tabla: vehicles
vehiclesFunción: Guarda información sobre los vehículos asociados a los usuarios.
Campos:
id(Long, PK): Identificador único.name(String): Nombre del vehículo.brand(String): Marca.model(String): Modelo.year(String, nullable): Año.type(Enum): Tipo de vehículo (CAR, MOTORCYCLE, BIKE).fuel_type(String, nullable): Tipo de combustible.tank_capacity(Double, nullable): Capacidad del tanque en litros.efficiency(Double, nullable): Consumo promedio.notes(String, nullable): Notas adicionales.user_id(String, FK): Usuario propietario.
Tabla: routes
routesFunción: Almacena las rutas creadas por los usuarios con sus detalles.
Campos:
id(Long, PK): Identificador único.name(String): Nombre de la ruta.description(String, nullable): Descripción de la ruta.start_time(DateTime): Hora de inicio.end_time(DateTime): Hora de fin.start_point(String): Punto de inicio.end_point(String): Punto final.distance_km(Double): Distancia total en kilómetros.moving_time_sec(Long): Tiempo en movimiento en segundos.avg_speed(Double): Velocidad media.max_speed(Double): Velocidad máxima.fuel_consumed(Double, nullable): Combustible consumido.efficiency(Double, nullable): Eficiencia del trayecto.pace(Double, nullable): Ritmo.compressed_path(String): Path comprimido en Base64.vehicle_id(Long, FK): Vehículo asociado.user_id(String, FK): Usuario propietario.
Tabla: route_pins
route_pinsFunción: Almacena puntos específicos marcados en una ruta.
Campos:
id(Long, PK): Identificador único.latitude(Double): Latitud.longitude(Double): Longitud.title(String): Título del pin.description(String, nullable): Descripción del pin.route_id(Long, FK): Ruta asociada.
Tabla: route_image
route_imageFunción: Guarda imágenes asociadas a las rutas.
Campos:
id(Long, PK): Identificador único.route_id(Long, FK): Ruta asociada.image_url(String): URL de la imagen.uploaded_at(DateTime): Fecha de subida.
Tabla: refresh_token
refresh_tokenFunción: Gestiona tokens de actualización para autenticación.
Campos:
id(Long, PK): Identificador único.user_uid(String, FK): Usuario asociado.token(String): Token.created_at(DateTime): Fecha de creación.expires_at(DateTime): Fecha de expiración.
Última actualización