Files
hackathon-opti-1a67c9077937…/backend/src/data/cache/route-state.impl.ts
Diego Mireles 59fcad643a feat(backend): tracking simulator, RBAC status, feedback & addresses
- 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
2026-05-23 02:33:54 -06:00

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();
}
}