#-----------------------------------------------------------------------------------------------------------
# Name:        carga_GCP.py
# note:        Para que esta automatización funcione es importante tener instalado y configurado.
#               a.) Python 3.8 ~ superior o Anaconda y agregar python como avirable de entorno en la instalación
#               b.) Libreria google.cloud
#               c.) Clave SA en formato .json (la proporciona veolia) como variable de entorno de la siguiente forma (en windows) : 
#                    name: 'GOOGLE_APPLICATION_CREDENTIALS'
#                    Value: 'path\"nombre_clave".json'
#               d.) programar este archivo como una tarea programada una vez al dia.
#
# Purpose:     1) Conecta con GCP por la json key
#              2) Sube las tablas necesarias
#              3) El proceso de debe ejecutar de manera diaraia a una hora acordada
#
# Author:      Julian Herrera Torres ING.Proycetos ESP
# Created:     29/11/2021 
# Copyright:   (c) Veolia Colombia 2021
#--------------------------------------------------------------------------------------------------------------

#Librerias
from google.cloud import storage
#nombre de cubo
bucket_name = 'cloudfuncions'
#Direccion del archivo
####se crea la cantidad de nombres de origen como tablas existan
source_file_name = "C:/Users/XXXXXXXXXXXXXXXXX.csv"
#carpeta y nombre del archivo
####se crea la cantidad de nombres de finales como tablas existan 
###### se trabaja en conunto con veolia para facilitar los nombres
destination_blob_name = "input/01_tecniapp/tecniapp.csv"

print('EMPIEZA FUNCION')
#funcion
def upload_blob(bucket_name, source_file_name, destination_blob_name):

    try:
        storage_client = storage.Client()
        bucket = storage_client.bucket(bucket_name)
        blob = bucket.blob(destination_blob_name)

        blob.upload_from_filename(source_file_name)

        print(
            "File {} uploaded to {}.".format(
                source_file_name, destination_blob_name
            )
        )
       
    except Exception as e:
        print(e)     
print('FINALIZA FUNCION')
#llama la funcion
#se puede repetir las veces necesarias, depende de la cantidad de tablas
upload_blob(bucket_name, source_file_name, destination_blob_name)
upload_blob(bucket_name, source_file_name, destination_blob_name)
upload_blob(bucket_name, source_file_name, destination_blob_name)

print('FINALIZA')






