Ejemplos de consultas frecuentes en ATQL
Últimos documentos creados
SELECT * FROM Document ORDER BY creation_date DESC
Documentos creados hoy ordenados por fecha
SELECT * FROM Document WHERE creation_date > TODAY ORDER BY creation_date DESC
Documentos modificados en los últimos 7 días
SELECT * FROM Document WHERE modified_date > NOW(-1w)
Últimos documentos creados por mi usuario
SELECT * FROM Document WHERE author = CURRENT_USER
Últimos documentos creados por un usuario 'foo'
SELECT * FROM Document WHERE author = 'foo' ORDER BY creation_date DESC
Documentos creados en el mes de enero de 2024
SELECT * FROM Document WHERE creation_date > '2024-01-01' AND creation_date < '2024-01-31'
Documentos con un estado del ciclo de vida determinado
SELECT * FROM my_form WHERE life_cycle_state = 'Expirado'
Reemplaza my_form por el nombre de tu formulario. El nombre del formulario no va entre comillas.
Reemplaza 'Expirado' por el estado del ciclo de vida por el que quieras filtrar.
Documentos con un valor de campo determinado
SELECT * FROM my_form WHERE metadata.my_field = 'field_value'
Reemplaza my_form por el nombre de tu formulario. El nombre del formulario no va entre comillas. Reemplaza my_field con el nombre API de tu campo y field_value por el valor de campo que quieras filtrar.
Puede consultar más sobre API v1 y ATQL en este enlace: https://athento.atlassian.net/wiki/spaces/ATHENTO/pages/3224240171/API+v1+RESTful
Seguridad
ATQL es un lenguaje propio del framework Athento que se parece en sus palabras reservadas a SQL, pero que NO es SQL. Muchos equipos de seguridad caen en el error de pensar que se puede realizar inyección de código SQL con ATQL, sin embargo, esto no es posible porque nunca hay una transformación de ATQL a SQL.
El lenguaje ATQL se interpreta internamente en Athento y se convierte a consultas del ORM de Django o consultas de ElasticSearch, según el motor de búsqueda usado.
Puede leerse más sobre la protección sobre inyección de código SQL en Django en el siguiente enlace https://docs.djangoproject.com/en/5.1/topics/security/#sql-injection-protection
Troubleshooting ATQL
La consulta no devuelve documentos pero sí están en el gestor
En este caso, compruebe lo siguiente:
- Compruebe que los documentos estén indexados (si utiliza Elastic Search)
- Si en la búsqueda hay campos de tipo fecha, compruebe si el formato es correcto. Pruebe a cambiar temporalmente esos campos a formato texto.
- Compruebe que el usuario que está activo en el team y tenga permisos de lectura sobre el espacio en el que se encuentran los documentos a buscar.
La consulta devuelve más documentos de los que espero
- Si está filtrando por campos que espera que sean vacíos, asegúrese de incluir la condición metadata.XXX IS NULL
- Si está filtrando por campos que espera que tengan algún valor, compruebe que no esté enviando una condición de cadena vacía. Por ejemplo, si está enviando metadata.XXX = 'YYYY', compruebe que la variable que envía como condición, tenga algún valor.
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.