diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..f353b08 --- /dev/null +++ b/INSTALL.md @@ -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. + + diff --git a/README.md b/README.md index 3e543b3..778e2a3 100644 --- a/README.md +++ b/README.md @@ -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) + diff --git a/kiffa-iterate.sh b/kiffa-iterate.sh new file mode 100755 index 0000000..7eb3b55 --- /dev/null +++ b/kiffa-iterate.sh @@ -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} + diff --git a/kiffa-v0.sh b/kiffa-v0.sh new file mode 100755 index 0000000..c257b8b --- /dev/null +++ b/kiffa-v0.sh @@ -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} + diff --git a/kiffa.conf.dist b/kiffa.conf.dist new file mode 100644 index 0000000..b7eec84 --- /dev/null +++ b/kiffa.conf.dist @@ -0,0 +1,6 @@ +# Para habilitar Kiffa, +# crear la copia 'kiffa.conf' y habilitar como sea adecuado. + +USER=usuario +PASS=password +DESTDIR=$(pwd)