- Add automatic route simulator (30s tick) that advances trucks and dispatches notifications without needing client-driven pull - Add GET /api/tracking/status protected by JWT for tunnel-view (each user only sees their own route + own inbox) - Add POST /api/tracking/reset-demo to wipe in-memory state without restarting the server (useful for repeated demos) - Add feedback module (POST /api/feedback, GET /api/feedback/me) with 4 feedback types and optional rating - Add addresses module: GET /colonias, GET/PUT /me with colonia validation against the catalog (rejects unknown colonias) - Add in-memory repos for route-state and notification inbox - Auto-register new users in the service mock with default route on register/login so they receive notifications immediately
31 lines
738 B
TypeScript
31 lines
738 B
TypeScript
/**
|
|
* route-state.impl.ts
|
|
* Implementación en memoria de RouteStateRepository.
|
|
*/
|
|
|
|
import type {
|
|
RouteState,
|
|
RouteStateRepository,
|
|
} from "../../domain/repositories/route-state.repository.js";
|
|
|
|
export class InMemoryRouteStateRepository implements RouteStateRepository {
|
|
private readonly states = new Map<string, RouteState>();
|
|
|
|
async get(routeId: string): Promise<RouteState | null> {
|
|
return this.states.get(routeId) ?? null;
|
|
}
|
|
|
|
async set(state: RouteState): Promise<void> {
|
|
this.states.set(state.routeId, state);
|
|
}
|
|
|
|
async getAll(): Promise<RouteState[]> {
|
|
return Array.from(this.states.values());
|
|
}
|
|
|
|
/** Helper para reset de demo. */
|
|
async clearAll(): Promise<void> {
|
|
this.states.clear();
|
|
}
|
|
}
|