{% macro job_logging_insert_update(arg_status) %}
{% if arg_status == 'In Progress' %}
{% set sql %}
insert into {{ target.database }}.LOGGING.PLATFORM_LOGS
(
BATCH_RUN_ID
,BATCH_NAME
,PROJECT_NAME
,JOB_NAME
,JOB_STATUS
,JOB_START_TIME
,JOB_END_TIME
,INVOCATION_ID
,TOOL_NAME
,JOB_EXECUTED_BY
,ETL_PROC_WID
)
SELECT
MD5_NUMBER_LOWER64('{{invocation_id}}') AS BATCH_RUN_ID
,'{{ var('batch_name') }}' AS BATCH_NAME /*Variable from dbt run command else take it from project config*/
,'{{ project_name }}' AS PROJECT_NAME
,'{{ this }}' AS JOB_NAME
,'{{ arg_status }}' AS JOB_STATUS
,current_timestamp()::timestamp_ntz AS JOB_START_TIME
,NULL AS JOB_END_TIME
,'{{invocation_id}}' AS INVOCATION_ID
,'DBT' AS TOOL_NAME
,'{{target.user}}' AS JOB_EXECUTED_BY
,MAX(TRUNCATE(DATE_PART(EPOCH_SECOND, current_timestamp()::timestamp_ntz)/60)) AS ETL_PROC_WID ;
{% endset %}
{% else %}
{% set sql %}
update {{ target.database }}.LOGGING.PLATFORM_LOGS
set JOB_STATUS='Completed',
JOB_END_TIME=current_timestamp()::timestamp_ntz
where INVOCATION_ID='{{invocation_id}}'
and JOB_NAME='{{ this }}'
and JOB_STATUS='In Progress';
MERGE INTO {{ target.database }}.EDW_CONFIG.DBT_MODEL_LAST_RUN AS target_tbl
USING (select JOB_NAME, max(job_start_time) as Last_Batch_Start_Time from {{ target.database }}.LOGGING.PLATFORM_LOGS
where batch_name='master_batch'
and JOB_NAME = '{{ this }}'
and batch_run_id not in(select batch_run_id
from {{ target.database }}.LOGGING.PLATFORM_LOGS
where job_status='Failed'
and batch_name='master_batch') group by JOB_NAME) AS source_tbl
on target_tbl.JOB_NAME = source_tbl.JOB_NAME
when matched then
update set target_tbl.Last_Batch_Start_Time = source_tbl.Last_Batch_Start_Time
when not matched then
insert(JOB_NAME,LAST_BATCH_START_TIME ) values(source_tbl.JOB_NAME, source_tbl.Last_Batch_Start_Time);
{% endset %}
{% endif %}
{% do run_query(sql) %}
{%- endmacro %}
{% macro batch_results_update(results) %}
{% if execute %}
{# { log("========== Begin Summary ==========", info=True) }#}
{% for res in results -%}
{% if res.status == 'error' %}
{% set error_messages -%}
message: {{ res.message |replace("'","") }}
{%- endset %}
{% set sql -%}
update {{ target.database }}.LOGGING.PLATFORM_LOGS
set JOB_STATUS='Failed',
JOB_END_TIME=current_timestamp()::timestamp_ntz,
ERROR_DETAILS='{{ error_messages }}'
where INVOCATION_ID='{{invocation_id}}'
and split_part(JOB_NAME,'.',3) = '{{ res.node.alias }}'
AND JOB_STATUS='In Progress';
commit;
{% endset %}
{% do run_query(sql) %}
{% endif %}
{#{ log(error_messages, info=True) }#}
{% endfor %}
{#{ log("========== End Summary ==========", info=True) }#}
{% endif %}
{% endmacro %}