import json
from typing import Optional
from tdw_catalog.utils import MetadataFieldType, CurrencyFieldValue
import tdw_catalog.metadata.field as field
[docs]class Field(field.MetadataField[CurrencyFieldValue]):
    """
    A field for currency values
    Attributes
    ----------
    currency : Optional[str]
        An optional three character string representation for this currency type (e.g. USD)
    amount: Optional[float]
        An optional fractional amount of currency for this currency field
    """
    def __init__(self, key: str, currency: Optional[str],
                 amount: Optional[float]) -> None:
        value = CurrencyFieldValue(value=amount, currency=currency)
        super().__init__(key, value)
    value: Optional[CurrencyFieldValue]
    def serialize(self) -> dict:
        res = super().serialize()
        res["value"] = json.dumps({
            "value": self.value.value,
            "currency": self.value.currency
        })
        res["field_type"] = MetadataFieldType.FT_CURRENCY
        return res