import json
from typing import Dict, List, Union
from pydantic import validate_call
from ..idwh import IDWH
[docs]
class Solcast:
    def __init__(self, dwh: IDWH) -> None:
        self.dwh = dwh
[docs]
    @validate_call
    def get_plants_to_update(self) -> List:
        query = "SET NOCOUNT ON; EXEC dwetl.GetSolcastPlantsToUpdate"
        return self.dwh.fetch(query) 
[docs]
    @validate_call
    def upsert_forecast_data(
        self,
        plantname: str,
        solcast_forecast_data: Dict,
        forecast_type_key: Union[int, None] = None,
    ) -> List:
        solcast_forecast_data_json = json.dumps(
            {
                "results": {
                    "plantname": plantname,
                    "values": solcast_forecast_data["forecasts"],
                }
            }
        )
        query = "EXEC dwetl.UpsertSolcastForecastData ?, ?"
        return self.dwh.execute(
            query, solcast_forecast_data_json, forecast_type_key
        )