from cosmos import DbtDag, ProjectConfig, ProfileConfig, ExecutionConfig
from cosmos.profiles import GoogleCloudServiceAccountFileProfileMapping

import os
from pathlib import Path
from pendulum import datetime

BIGQUERY_CONN_ID = os.getenv("BIGQUERY_CONN_ID", "bigquery_default")

DBT_PROJECT_NAME = os.getenv("DBT_PROJECT_NAME", "marketing_metrics")
DBT_PROJECT_PATH = (
    (Path(__file__).parents[2] / "dbt" / DBT_PROJECT_NAME).resolve().as_posix()
)
DBT_EXECUTABLE_PATH = f"{os.getenv('AIRFLOW_HOME')}/dbt_venv_bigquery/bin/dbt"

_project_config = ProjectConfig(
    dbt_project_path=DBT_PROJECT_PATH,
)

_profile_config = ProfileConfig(
    profile_name="default",
    target_name="dev",
    profile_mapping=GoogleCloudServiceAccountFileProfileMapping(
        conn_id=BIGQUERY_CONN_ID
    ),
)

_execution_config = ExecutionConfig(
    dbt_executable_path=DBT_EXECUTABLE_PATH,
)

_default_args = {
    "retries": 2,
}


marketing_metrics = DbtDag(
    dag_id="marketing_metrics",
    project_config=_project_config,
    profile_config=_profile_config,
    execution_config=_execution_config,
    start_date=datetime(2025, 8, 23),
    schedule="@daily",
    default_args=_default_args,
    tags=["marketing", "bigquery", "cosmos"],
)