#' Función para descargar archivos del repositorio s3
#'
#' @param proyecto_id id del proyecto asignado en la tabla de proyectos. En caso de proporcionar este campo ya no es necesario indicar proyecto y ola
#' @param proyecto nombre del proyecto que se le asigno en la tabla de proyectos. En caso de proporcionar este campo y el de ola ya no es necesario indicar proyecto_id
#' @param ola numero de ola que se asigno en la tabla de proyectos. En caso de proporcionar este campo y proyecto ya no es necesario indicar proyecto_id
#' @param cuestionario variable logica que determina si se descargará o no el cuestionario de existir en el repositorio
#' @param pda variable logica que determina si se descargará o no el plan de análisis de existir en el repositorio
#' @param reglas_validacion variable logica que determina si se descargará o no el archivo con las reglas de validación de existir en el repositorio
#' @param base_original variable logica que determina si se descargará o no la base original de existir en el repositorio
#' @param base_procesada variable logica que determina si se descargará o no la base procesada de existir en el repositorio
#' @param c_limpieza variable logica que determina si se descargará o no el código de limpieza de existir en el repositorio
#' @param c_procesamiento variable logica que determina si se descargará o no el código de procesamiento de existir en el repositorio
#' @param c_analisis variable logica que determina si se descargará o no el código de análisis de existir en el repositorio
#' @param c_ponderacion variable logica que determina si se descargará o no el código de ponderación de existir en el repositorio
#' @param resultados_tablas variable logica que determina si se descargará o el archivo con las tablas de existir en el repositorio
#' @param resultados_analisis variable logica que determina si se descargará o el archivo comprimido con los resultados de análisis especiales de existir en el repositorio
#' @param presentacion variable logica que determina si se descargará o el archivo de la presentación de existir en el repositorio
#' @param con_pass cadena de conexión a la base de datos
#'
#'
#' @examples
#' # db_descargar_archivo(1)
#'
db_descargar_archivo<-function(proyecto_id = NA, proyecto = NA,ola = NA,
cuestionario = TRUE, pda = TRUE,
catalogo_preguntas = TRUE,
reglas_validacion = TRUE,
base_original = TRUE,base_procesada = TRUE,
c_limpieza = TRUE,c_procesamiento = TRUE, c_analisis = TRUE ,c_ponderacion = TRUE,
resultados_tablas = TRUE, resultados_analisis = TRUE,
presentacion = TRUE,
directorio = dirname(rstudioapi::getActiveDocumentContext()$path),
con_pass = db_conexion()){
require(tidyr)
require(dplyr)
require(aws.s3)
if(!is.na(proyecto)&!is.na(ola)){
proyecto_datos<-DBI::dbGetQuery(con_pass,paste0("SELECT * FROM proyectos WHERE proyecto = '",proyecto,"' AND ola = ", ola))
}else if(!is.na(proyecto_id)){
proyecto_datos<-DBI::dbGetQuery(con_pass,paste0("SELECT * FROM proyectos WHERE proyecto_id = ",proyecto_id))
}
DBI::dbDisconnect(con_pass)
#Preparamos la tabla con la información del proyecto
proyecto_datos<-proyecto_datos %>% data.frame() %>%
mutate(proyecto_id = as.numeric(proyecto_id),
fecha = as.character(fecha)) %>%
slice(1) %>%
unlist()
if(length(proyecto_datos)>0){
proyecto<-proyecto_datos["proyecto" ]
ola <- proyecto_datos["ola" ]
}else(
stop("No se encuentra el proyecto en la tabla de proyectos")
)
Sys.setenv(
AWS_ACCESS_KEY_ID = "AKIAI6BZCS6ISK3ITXIQ",
AWS_SECRET_ACCESS_KEY = "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",
AWS_REGION = "us-east-1"
)
quita_extension<-function(key,extension){
for(i in 1:length(key)){
key[i]<-gsub(pattern = paste0(".",extension[i]),replacement = "",x = key[i] ,fixed = T)
}
return(key)
}
lista_archivos<- aws.s3::get_bucket_df("upax-research-bucket", prefix="Procesamiento/Proyectos/")
lista_archivos <- lista_archivos %>%
mutate(extension = tools::file_ext(Key),
key_sin_extension = quita_extension(Key,extension))
objetos_a_descargar<-data.frame(NA,NA)
objetos_a_descargar<-objetos_a_descargar[-1,]
names(objetos_a_descargar)<-c("archivo","ruta")
if(cuestionario){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("Cuestionario ",proyecto," - ", ola),paste0("Procesamiento/Proyectos/Cuestionario ",proyecto," - ", ola))
}
if(catalogo_preguntas){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("Catalogo de preguntas ",proyecto," - ", ola),paste0("Procesamiento/Proyectos/Catalogo de preguntas ",proyecto," - ", ola))
}
if(pda){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("PDA ",proyecto," - ", ola),paste0("Procesamiento/Proyectos/PDA ",proyecto," - ", ola))
}
if(reglas_validacion){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("Reglas de validación ",proyecto," - ", ola),paste0("Procesamiento/Proyectos/Reglas de validación ",proyecto," - ", ola))
}
if(base_original){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("base_original_",proyecto," - ", ola),paste0("Procesamiento/Proyectos/base_original_",proyecto," - ", ola))
}
if(base_procesada){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("base_procesada_",proyecto," - ", ola),paste0("Procesamiento/Proyectos/base_procesada_",proyecto," - ", ola))
}
if(c_limpieza){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("limpieza_",gsub(" ","_",proyecto),"_", ola),paste0("Procesamiento/Proyectos/limpieza_",gsub(" ","_",proyecto),"_", ola))
}
if(c_procesamiento){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("procesamiento_",gsub(" ","_",proyecto),"_", ola),paste0("Procesamiento/Proyectos/procesamiento_",gsub(" ","_",proyecto),"_", ola))
}
if(c_analisis){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("analisis_",gsub(" ","_",proyecto),"_", ola),paste0("Procesamiento/Proyectos/analisis_",gsub(" ","_",proyecto),"_", ola))
}
if(c_ponderacion){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("ponderacion_",gsub(" ","_",proyecto),"_", ola),paste0("Procesamiento/Proyectos/ponderacion_",gsub(" ","_",proyecto),"_", ola))
}
if(resultados_tablas){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("Tablas ",proyecto," - ", ola),paste0("Procesamiento/Proyectos/Tablas ",proyecto," - ", ola))
}
if(resultados_analisis){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("Análisis ",proyecto," - ", ola),paste0("Procesamiento/Proyectos/Análisis ",proyecto," - ", ola))
}
if(presentacion){
fila<-nrow(objetos_a_descargar)+1
objetos_a_descargar[fila,]<-c(paste0("Presentación ",proyecto," - ", ola),paste0("Procesamiento/Proyectos/Presentación ",proyecto," - ", ola))
}
objetos_a_descargar <- objetos_a_descargar %>%
dplyr::filter(ruta %in% lista_archivos$key_sin_extension)
for(i in 1:nrow(objetos_a_descargar)){
objeto_actual<-objetos_a_descargar %>% slice(i)
ruta<-objeto_actual %>% select(ruta) %>% c() %>% unlist()
nombre<-objeto_actual %>% select(archivo) %>% c() %>% unlist()
archivo<-lista_archivos %>%
filter(key_sin_extension %in% ruta) %>%
select(Key,extension) %>%
c() %>%
unlist()
save_object(object = archivo[1],
bucket = "upax-research-bucket",
file = paste0(directorio,"/",nombre,".",archivo[2])
)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.