"""Raw representations of every data type in the AWS LakeFormation service.

See Also:
    `AWS developer guide for LakeFormation
    <https://docs.aws.amazon.com/lake-formation/latest/dg/index.html>`_

This file is automatically generated, and should not be directly edited.
"""

from attr import attrib
from attr import attrs

from ..core import ATTRSCONFIG
from ..core import Resource
from ..core import ResourceProperties
from ..core import create_object_converter

__all__ = [
    "DataLakeSettings",
    "DataLakeSettingsProperties",
    "Permissions",
    "PermissionsProperties",
    "Resource",
    "ResourceProperties",
]


@attrs(**ATTRSCONFIG)
class DataLakeSettingsProperties(ResourceProperties):
    Admins = attrib(default=None)


@attrs(**ATTRSCONFIG)
class DataLakeSettings(Resource):
    """A Data Lake Settings for LakeFormation.

    See Also:
        `AWS Cloud Formation documentation for DataLakeSettings
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html>`_
    """

    RESOURCE_TYPE = "AWS::LakeFormation::DataLakeSettings"

    Properties: DataLakeSettingsProperties = attrib(
        factory=DataLakeSettingsProperties,
        converter=create_object_converter(DataLakeSettingsProperties),
    )


@attrs(**ATTRSCONFIG)
class PermissionsProperties(ResourceProperties):
    DataLakePrincipal = attrib(default=None)
    Permissions = attrib(default=None)
    PermissionsWithGrantOption = attrib(default=None)
    Resource = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Permissions(Resource):
    """A Permissions for LakeFormation.

    See Also:
        `AWS Cloud Formation documentation for Permissions
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-permissions.html>`_
    """

    RESOURCE_TYPE = "AWS::LakeFormation::Permissions"

    Properties: PermissionsProperties = attrib(
        factory=PermissionsProperties,
        converter=create_object_converter(PermissionsProperties),
    )


@attrs(**ATTRSCONFIG)
class ResourceProperties(ResourceProperties):
    ResourceArn = attrib(default=None)
    RoleArn = attrib(default=None)
    UseServiceLinkedRole = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Resource(Resource):
    """A Resource for LakeFormation.

    See Also:
        `AWS Cloud Formation documentation for Resource
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-resource.html>`_
    """

    RESOURCE_TYPE = "AWS::LakeFormation::Resource"

    Properties: ResourceProperties = attrib(
        factory=ResourceProperties,
        converter=create_object_converter(ResourceProperties),
    )
