from djstripe.models import Price, Product, Subscription, SubscriptionItem
from ninja import ModelSchema

from glitchtip.schema import CamelSchema


class PriceIDSchema(CamelSchema):
    price: str


class SubscriptionIn(PriceIDSchema):
    organization: int

class ProductSchema(CamelSchema, ModelSchema):
    class Meta:
        model = Product
        fields = ["id", "name", "description", "type", "metadata"]


class PriceSchema(CamelSchema, ModelSchema):
    product: ProductSchema

    class Meta:
        model = Price
        fields = [
            "id",
            "nickname",
            "currency",
            "unit_amount",
            # "human_readable_price",
            "metadata",
            "product",
        ]


class SubscriptionItemSchema(CamelSchema, ModelSchema):
    price: PriceSchema

    class Meta:
        model = SubscriptionItem
        fields = ["id", "price"]


class SubscriptionSchema(CamelSchema, ModelSchema):
    items: list[SubscriptionItemSchema]

    class Meta:
        model = Subscription
        exclude = ["default_tax_rates"]


class CreateSubscriptionResponse(SubscriptionIn):
    subscription: SubscriptionSchema


class ProductPriceSchema(CamelSchema, ModelSchema):
    prices: list[PriceSchema]

    class Meta:
        model = Product
        fields = ["id", "name", "description", "type", "metadata"]