from sqlalchemy import Column
from sqlalchemy.types import JSON, Text, Boolean, TIMESTAMP, BigInteger
from sqlalchemy.dialects import postgresql as psql

from steampipe_alchemy import Base

class AwsRedshiftCluster(Base):
    __tablename__ = 'aws_redshift_cluster'
    cluster_identifier = Column(name='cluster_identifier', type_=Text, nullable=True)
    cluster_namespace_arn = Column(name='cluster_namespace_arn', type_=Text, nullable=True)
    allow_version_upgrade = Column(name='allow_version_upgrade', type_=Boolean, nullable=True)
    automated_snapshot_retention_period = Column(name='automated_snapshot_retention_period', type_=BigInteger, nullable=True)
    availability_zone = Column(name='availability_zone', type_=Text, nullable=True)
    availability_zone_relocation_status = Column(name='availability_zone_relocation_status', type_=Text, nullable=True)
    cluster_availability_status = Column(name='cluster_availability_status', type_=Text, nullable=True)
    cluster_create_time = Column(name='cluster_create_time', type_=TIMESTAMP, nullable=True)
    cluster_nodes = Column(name='cluster_nodes', type_=JSON, nullable=True)
    cluster_parameter_groups = Column(name='cluster_parameter_groups', type_=JSON, nullable=True)
    cluster_public_key = Column(name='cluster_public_key', type_=Text, nullable=True)
    cluster_revision_number = Column(name='cluster_revision_number', type_=Text, nullable=True)
    cluster_security_groups = Column(name='cluster_security_groups', type_=JSON, nullable=True)
    cluster_snapshot_copy_status = Column(name='cluster_snapshot_copy_status', type_=JSON, nullable=True)
    cluster_status = Column(name='cluster_status', type_=Text, nullable=True)
    cluster_subnet_group_name = Column(name='cluster_subnet_group_name', type_=Text, nullable=True)
    cluster_version = Column(name='cluster_version', type_=Text, nullable=True)
    data_transfer_progress = Column(name='data_transfer_progress', type_=JSON, nullable=True)
    db_name = Column(name='db_name', type_=Text, nullable=True)
    deferred_maintenance_windows = Column(name='deferred_maintenance_windows', type_=JSON, nullable=True)
    elastic_ip_status = Column(name='elastic_ip_status', type_=JSON, nullable=True)
    elastic_resize_number_of_node_options = Column(name='elastic_resize_number_of_node_options', type_=Text, nullable=True)
    encrypted = Column(name='encrypted', type_=Boolean, nullable=True)
    endpoint = Column(name='endpoint', type_=JSON, nullable=True)
    enhanced_vpc_routing = Column(name='enhanced_vpc_routing', type_=Boolean, nullable=True)
    expected_next_snapshot_schedule_time = Column(name='expected_next_snapshot_schedule_time', type_=TIMESTAMP, nullable=True)
    expected_next_snapshot_schedule_time_status = Column(name='expected_next_snapshot_schedule_time_status', type_=Text, nullable=True)
    hsm_status = Column(name='hsm_status', type_=JSON, nullable=True)
    iam_roles = Column(name='iam_roles', type_=JSON, nullable=True)
    kms_key_id = Column(name='kms_key_id', type_=Text, nullable=True)
    maintenance_track_name = Column(name='maintenance_track_name', type_=Text, nullable=True)
    manual_snapshot_retention_period = Column(name='manual_snapshot_retention_period', type_=BigInteger, nullable=True)
    master_username = Column(name='master_username', type_=Text, nullable=True)
    modify_status = Column(name='modify_status', type_=Text, nullable=True)
    next_maintenance_window_start_time = Column(name='next_maintenance_window_start_time', type_=TIMESTAMP, nullable=True)
    node_type = Column(name='node_type', type_=Text, nullable=True)
    number_of_nodes = Column(name='number_of_nodes', type_=BigInteger, nullable=True)
    pending_actions = Column(name='pending_actions', type_=JSON, nullable=True)
    pending_modified_values = Column(name='pending_modified_values', type_=JSON, nullable=True)
    preferred_maintenance_window = Column(name='preferred_maintenance_window', type_=Text, nullable=True)
    publicly_accessible = Column(name='publicly_accessible', type_=Boolean, nullable=True)
    resize_info = Column(name='resize_info', type_=JSON, nullable=True)
    restore_status = Column(name='restore_status', type_=JSON, nullable=True)
    snapshot_schedule_identifier = Column(name='snapshot_schedule_identifier', type_=Text, nullable=True)
    snapshot_schedule_state = Column(name='snapshot_schedule_state', type_=Text, nullable=True)
    tags_src = Column(name='tags_src', type_=JSON, nullable=True)
    vpc_id = Column(name='vpc_id', type_=Text, nullable=True)
    vpc_security_groups = Column(name='vpc_security_groups', type_=JSON, nullable=True)
    tags = Column(name='tags', type_=JSON, nullable=True)
    title = Column(name='title', type_=Text, primary_key=True, nullable=True)
    akas = Column(name='akas', type_=JSON, nullable=True)
    partition = Column(name='partition', type_=Text, nullable=True)
    region = Column(name='region', type_=Text, nullable=True)
    account_id = Column(name='account_id', type_=Text, nullable=True)