> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/sdks/backend-sdk/backend1n/release_notes/4.5.0_release_notes.md).

# 4.5.0

Esta versión se ha añadido el soporte para bases de datos PostgreSQL. También se añadió autenticación JWT opcional, configurable desde `config.json` o mediante variables de entorno `FACEPHI_BACKEND1N_REST_*`.

**No hay cambios de contrato** en los endpoints. Tampoco el soporte anterior de MongoDB se ha alterado. La decisión sobre que tecnología de BD utilizará el servicio se tomará al arrancar el mismo, a partir de la cadena de conexión:

```bash
# MongoDB prefijos aceptados.
# mongodb://
# mongodb+srv://
export DATABASE_CONNECT_STRING=mongodb://user:pass@localhost:32902/?directConnection=true&serverSelectionTimeoutMS=5000

# PostgreSQL prefijos aceptados.
# postgres://
# postgresql://
export DATABASE_CONNECT_STRING=postgresql://user:pass@localhost:32903/db_backend
```

## Sobre las bases de datos

En el caso de MongoDB, el propio servicio creará una base de datos denominada `db-backend`, si no existe previamente. En ella alojará dos colecciones:

* `media` para almacenar images.
* `patterns` para almacenar patrones biométricos.

El caso de PostgreSQL difiere ligeramente. Una BD con el nombre `db_backend` debe haber sido creada previamente por el administrador del sistema. PostgreSQL dificulta la creación de bases de datos desde el propio cliente. Un ejemplo de los comandos previos que debería ejecutar el administrador sería:

```bash
sudo -u postgres psql -c "CREATE ROLE backend1n WITH LOGIN PASSWORD 'backend1n';"
sudo -u postgres psql -c "CREATE DATABASE db_backend OWNER backend1n;"
sudo -u postgres psql -d db_backend -c "GRANT ALL ON SCHEMA public TO backend1n;"
```

Dentro de la BD PostgreSQL, el servicio creará dos tablas, al igual que ocurría con MongoDB:

* `media` para almacenar images.
* `patterns` para almacenar patrones biométricos.

> **Importante:** Las cadenas de conexión deben incluir la información de usuario/contraseña o cualquier información adicional que permita al servicio el acceso con permisos de lectura/escritura.

## Añadido

* Autenticación JWT opcional, configurable desde `config.json` o mediante variables de entorno `FACEPHI_BACKEND1N_REST_*`.
* Soporte para bases de datos `PostgreSQL`.
* Cobertura de pruebas de integración para endpoints públicos y protegidos cuando la autenticación JWT está habilitada.
* Cobertura de pruebas de integración para los backends MongoDB y PostgreSQL.
