Skip to content
36 changes: 35 additions & 1 deletion cwms/catalog/catalog.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from typing import Optional
from datetime import datetime
from typing import Optional, Tuple

import pandas as pd

import cwms.api as api
from cwms.cwms_types import Data
Expand Down Expand Up @@ -130,3 +133,34 @@ def get_timeseries_catalog(

response = api.get(endpoint=endpoint, params=params, api_version=2)
return Data(response, selector="entries")


def get_ts_extents(ts_id: str, office_id: str) -> Tuple[datetime, datetime, datetime]:
"""Retrieves earliest extent, latest extent, and last update via cwms.get_timeseries_catalog

Parameters
----------
ts_id: string
Timseries id to query.
office_id: string
The owning office of the timeseries group.

Returns
-------
tuple of datetime objects (earliest_time, latest_time, last_update)
"""
cwms_cat = get_timeseries_catalog(
office_id=office_id,
like=ts_id,
timeseries_group_like=None,
page_size=500,
include_extents=True,
).df

times = cwms_cat[cwms_cat.name == ts_id].extents.values[0][0]

earliest_time = pd.to_datetime(times["earliest-time"])
latest_time = pd.to_datetime(times["latest-time"])
last_update = pd.to_datetime(times["last-update"])

return earliest_time, latest_time, last_update
Loading