from enum import Enum


class AuditAction(str, Enum):
    API_KEY_CREATED = "api_key_created"
    API_KEY_REVOKED = "api_key_revoked"
    API_KEY_ROTATED = "api_key_rotated"
    API_KEY_SCOPE_UPDATED = "api_key_scope_updated"
    BUCKET_ACCESSED = "bucket_accessed"
    BUCKET_CREATED = "bucket_created"
    BUCKET_DELETED = "bucket_deleted"
    BUCKET_UPDATED = "bucket_updated"
    CLUSTER_ACCESSED = "cluster_accessed"
    CLUSTER_CREATED = "cluster_created"
    CLUSTER_DELETED = "cluster_deleted"
    CLUSTER_EXECUTED = "cluster_executed"
    CLUSTER_UPDATED = "cluster_updated"
    COLLECTION_ACCESSED = "collection_accessed"
    COLLECTION_CREATED = "collection_created"
    COLLECTION_DELETED = "collection_deleted"
    COLLECTION_UPDATED = "collection_updated"
    NAMESPACE_ACCESSED = "namespace_accessed"
    NAMESPACE_CREATED = "namespace_created"
    NAMESPACE_DELETED = "namespace_deleted"
    NAMESPACE_UPDATED = "namespace_updated"
    PERMISSION_UPDATED = "permission_updated"
    RETRIEVER_ACCESSED = "retriever_accessed"
    RETRIEVER_CREATED = "retriever_created"
    RETRIEVER_DELETED = "retriever_deleted"
    RETRIEVER_QUERIED = "retriever_queried"
    RETRIEVER_UPDATED = "retriever_updated"
    STORAGE_CONNECTION_CREATED = "storage_connection_created"
    STORAGE_CONNECTION_DELETED = "storage_connection_deleted"
    STORAGE_CONNECTION_FAILED = "storage_connection_failed"
    STORAGE_CONNECTION_TESTED = "storage_connection_tested"
    STORAGE_CONNECTION_UPDATED = "storage_connection_updated"
    TAXONOMY_ACCESSED = "taxonomy_accessed"
    TAXONOMY_CREATED = "taxonomy_created"
    TAXONOMY_DELETED = "taxonomy_deleted"
    TAXONOMY_UPDATED = "taxonomy_updated"
    USER_CREATED = "user_created"
    USER_DELETED = "user_deleted"
    USER_UPDATED = "user_updated"

    def __str__(self) -> str:
        return str(self.value)
