name: dbt_run_deployment
run-name: dbt_run_deployment

on:
  workflow_dispatch:
    branches:
      - "main"
    inputs:
      warehouse:
        type: choice 
        description: Snowflake warehouse
        required: true 
        options:
          - DBT
          - DBT_CLOUD
          - DBT_EMERGENCY
        default: DBT
      dbt_command:
        type: string
        description: 'DBT Run Command'
        required: true

env:
  USE_VARS: "${{ vars.USE_VARS }}"
  DBT_PROFILES_DIR: "${{ vars.DBT_PROFILES_DIR }}"
  DBT_VERSION: "${{ vars.DBT_VERSION }}"
  ACCOUNT: "${{ vars.ACCOUNT }}"
  ROLE: "${{ vars.ROLE }}"
  USER: "${{ vars.USER }}"
  PASSWORD: "${{ secrets.PASSWORD }}"
  REGION: "${{ vars.REGION }}"
  DATABASE: "${{ vars.DATABASE }}"
  WAREHOUSE: "${{ inputs.WAREHOUSE }}"
  SCHEMA: "${{ vars.SCHEMA }}"

concurrency:
  group: ${{ github.workflow }}

jobs:
  dbt:
    runs-on: ubuntu-latest
    environment:
      name: workflow_prod
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: "3.10"
          cache: "pip"

      - name: install dependencies
        run: |
          pip install -r requirements.txt
          dbt deps
      - name: Run DBT Jobs
        run: |
          ${{ inputs.dbt_command }}
      - name: Run datashare model
        run: |
          cnt=$(dbt -q ls -m fsc_utils.datashare._datashare___create_gold | wc -l ); if [ $cnt -eq 1 ]; then dbt run -m fsc_utils.datashare._datashare___create_gold; fi; 
          dbt run-operation run_query --args "{sql: call admin.datashare.sp_grant_share_permissions('${{ env.DATABASE }}')}"
      - name: Store logs
        uses: actions/upload-artifact@v3
        with:
          name: dbt-logs
          path: |
            logs
            target