from src.domain.connectors.catalog._base import ConnectorDef, ConnectorFieldDef
from src.domain.connectors.catalog._object_store import object_actions

CONNECTOR = ConnectorDef(
    key="amazon_s3",
    name="Amazon S3",
    category="storage",
    auth_type="api_key",
    version="01.00.00",
    status="preview",
    description="Customer-bound general-purpose S3 buckets; never P2HS-managed storage.",
    docs_url="https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html",
    config_fields=("region", "bucket_name", "path_prefix", "storage_map"),
    config_field_defs=(
        ConnectorFieldDef(key="region", label="AWS region", required=True),
        ConnectorFieldDef(key="bucket_name", label="Default bucket"),
        ConnectorFieldDef(key="path_prefix", label="Key prefix"),
        ConnectorFieldDef(
            key="storage_map",
            label="Storage bindings",
            input_type="json",
            description='JSON object: alias -> {"bucket_name": "...", "prefix": "..."}',
        ),
    ),
    secret_fields=("access_key_id", "secret_access_key", "session_token"),
    secret_field_defs=(
        ConnectorFieldDef(key="access_key_id", label="Access key ID", required=True),
        ConnectorFieldDef(
            key="secret_access_key", label="Secret access key", required=True, input_type="password"
        ),
        ConnectorFieldDef(
            key="session_token", label="Optional session token", input_type="password"
        ),
    ),
    actions=object_actions("amazon_s3"),
)
