Skip to content
Snippets Groups Projects
subscriptions.py 899 B
Newer Older
Neda Moeini's avatar
Neda Moeini committed
from orchestrator.db import (
    ProductTable,
    ResourceTypeTable,
    SubscriptionInstanceTable,
    SubscriptionInstanceValueTable,
    SubscriptionTable,
)

from gso.products.product_types.site import Site


def get_site_by_name(site_name: str) -> Site:
    """Get a site by its name.

    Args:
    ----
    site_name (str): The name of the site.
    """
    subscription = (
        SubscriptionTable.query.join(
            ProductTable, SubscriptionInstanceTable, SubscriptionInstanceValueTable, ResourceTypeTable
        )
        .filter(SubscriptionInstanceValueTable.value == site_name)
        .filter(ResourceTypeTable.resource_type == "site_name")
        .filter(SubscriptionTable.status == "active")
        .first()
    )
    if not subscription:
        raise ValueError(f"Site with name {site_name} not found.")
    return Site.from_subscription(subscription.subscription_id)