# Sistema de Gestión del Transporte Público Metropolitano

Repositorio de los diferentes componentes del sistema de almacenamiento y análisis de los datos del transporte público del Gran Concepción.

## Uso

### Creación de los contenedores

Se dispone del archivo `docker-compose.yaml` que permite construir los contenedores a partir de las diferentes imagenes.

Para construir las imagenes ejecute en el directorio:
```
docker-compose build
```

Para subir las imagenes al repositorio configurado en el archivo, ejecute:
```
docker-compose push
```

### Instalación del enjambre

Se deja el archivo `docker-compose.srv.yaml` con una configuración básica de un enjambre del proyecto. Primero, debe crear los volumenes externos donde se almacenan los estados persistentes de la base de datos:


```
docker volume create static_gtfs_volume
docker volume create pgdata_web
docker volume create pgdata_hot_gtfs
```

Una vez creados los volumenes persistentes, para correr una instancia del enjambre con el nombre `prueba-tpmc` ejecute:
```
docker stack deploy prueba-tpmc --compose-file docker-compose.srv.yaml
```

Esto dejará corriendo los contenedores en el enjambre, cada uno se encuentra sirviendo sus endpoints configurados en el servicio y requiere adicionalmente un proxy inverso haciendo relay a de los requests a los contenedores correctos.

### Disclaimer

Se deben crear manualmente las schemas en el `system_db`:

```
docker ps

docker exec -it hash#del#contendor#system_db bash

psql -U postgres
\c docker
create schema doc;
create schema gestion;
create schema registros;
create schema usuarios;
```

Luego, enviar una solicitud al contenedor `private-dynamic` crea las tablas del modelo una vez que los schemas se encuentran creados.

#### Este procedimiento es temporal

# TODO

* Avanzar exponiendo endpoints dinamicos en `public-dynamic`: listado de archivos GTFS para descargar y mapa de paraderos.
* Programar la lógica para la carga de los GTFS-Estáticos a la bases de datos en `carga-gtfs`.
* Consolidar los modelos en archivos `.sql`
