v0 - inicio de pruebas en Servicios Trébol

This commit is contained in:
Luis Machuca 2020-07-09 12:04:33 -04:00
parent 1cd5fa6340
commit 89df7ded9c
5 changed files with 101 additions and 1 deletions

15
INSTALL.md Normal file
View file

@ -0,0 +1,15 @@
# Kiffa - Instalación
Después de clonar el repositorio se sigue los siguientes pasos:
1.- Crear una copia de `kiffa.conf.dist` con el nombre `kiffa.conf` el cual contendrá la configuración necesaria.
2.- En `kiffa.conf` colocar las variables que sea necesario dentro del caso:
* `HOST`, `PORT`: conexión a la BDD, en caso que no se lea desde `kiffa-iterate.sh`.
* `DB` : conexión a la BDD, en caso que no se lea desde `kiffa-iterate.sh`.
* `USER` : usuario de la BDD con permisos de lectura y acceso remoto.
* `PASS` : password para `USER`
* `DESTDIR` : Ruta en la cual se ensambla los archivos de historial.

View file

@ -1,4 +1,29 @@
# Kiffa
Miniaplicativo de backend archivador de datos boletas y ventas fiscales para BD Alerce, Crux.
Miniaplicativo de backend archivador de datos boletas y ventas fiscales para BD Alerce, Crux.
El sistema comprende dos scripts: `kiffa.sh` y `kiffa-iterate.sh`. El aplicativo principal es kiffa.sh el cual se conecta a una BDD por medio de un archivo de conexión, y descarga información de una lista de tablas que se le entrega.
`kiffa-iterate.sh` se entrega como complemento para serializar trabajo sobre una serie de bases de datos listadas en un almacén central.
# Kiffa.sh
El aplicativo trabaja de la siguiente forma:
Al iniciar `kiffa.sh`, cargará la información disponible en `kiffa.conf`. Entre este archivo y el entorno, compilará la información en tres pasos:
* las variables para conectarse a la base de datos `DB` en `HOST:PORT`, con las creenciales de `-u USER -pPASS`.
* Establecida la conexión, tomará una lista de tablas desde `stdin`. Cada una de estas tablas debe tener los campos y formatos necesarios para que *Kiffa* haga su análisis.
* Se calculará el timeframe de descarga `TF`, que es de un tiempo de inicio + 1 hora, y se descargará la información que corresponde a este periodo en un archivo almacenado en `DESTDIR`.
Por ejemplo, si `mis_tablas.txt` tiene una lista de tablas con los requerimientos necesarios (una tabla por línea), el siguiente comando captura la información de estas tablas de una base de datos configurada en `kiffa.conf`:
kiffa.sh DB=mi_bdd < mis_tablas.txt
# kiffa-iterate.sh
(En progreso)

9
kiffa-iterate.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/sh
set -eu
LISTA=${1?Falta el argumento arg1: nombrearchivo}
while read -r ID HOST PORT DB; do
echo ${HOST} ${PORT} ${DB}
done < ${LISTA}

45
kiffa-v0.sh Executable file
View file

@ -0,0 +1,45 @@
#!/bin/bash
set -eu
umask 007
source kiffa.conf
DB=${1?No hay arg1: nombre BDD}
TABLELIST=${2?No hay arg2: lista tablas}
#TF se pasa por el entorno y es 'now' o el timeframe para iniciar la lectura en el formato de $(date)
#DB=db_trebol_recabarren
# DB es el primer argumento
#TABLELIST es el segundo argumento
TF=${TF:-TF}
echo 0 ${TF}
FECHA=$(date -d "${TF}" '+%Y-%m-%d')
echo 1 ${FECHA}
# produccion
INICIO=$(date -d '${TF} - 1 hour' '+%Y-%m-%d %H:00:00')
FIN=$(date -d '${TF} - 1 hour' '+%Y-%m-%d %H:59:59')
SUFF=$(date -d '{TF} - 1 hour' '+%Y%m%d-%H')
W="bof_fecha = CURRENT_DATE AND (creado BETWEEN '${INICIO}' AND '${FIN}') ORDER BY creado ASC"
# pruebas
#INICIO=$(date -d "${TF} - 1 hour" '+%H:00:00')
#FIN=$(date -d "${TF} - 1 hour" '+%H:59:59')
#SUFF=$(date -d "${TF} - 1 hour" '+%Y%m%d-%H')
#W="bof_fecha = '${FECHA}' AND (bof_hora BETWEEN '${INICIO}' AND '${FIN}') ORDER BY bof_hora ASC"
# --
DB=${1}
mkdir -p ${DESTDIR}/${DB}
echo $W
while read -r TABLENAME; do
#echo $HORARIO
mysqldump -h ${HOST} --port ${PORT} -u ${USER} -p${PASS} \
--compact -t --disable-extended-insert --skip-tz-utc \
--where="${W}" \
${DB} ${TABLENAME} > ${DESTDIR}/${DB}/${TABLENAME}.${SUFF}.sql;
echo ${DESTDIR}.${DB}.${TABLENAME};
done < ${TABLELIST}

6
kiffa.conf.dist Normal file
View file

@ -0,0 +1,6 @@
# Para habilitar Kiffa,
# crear la copia 'kiffa.conf' y habilitar como sea adecuado.
USER=usuario
PASS=password
DESTDIR=$(pwd)