from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict from backend.modules.aws_accounts.models import CredentialType class AWSCredentialBase(BaseModel): name: str account_id: str credential_type: CredentialType = CredentialType.ACCESS_KEY access_key_id: Optional[str] = None secret_access_key: Optional[str] = None role_arn: Optional[str] = None external_id: Optional[str] = None default_region: str = "ap-northeast-1" is_active: int = 1 class AWSCredentialCreate(AWSCredentialBase): pass class AWSCredentialUpdate(BaseModel): name: Optional[str] = None account_id: Optional[str] = None credential_type: Optional[CredentialType] = None access_key_id: Optional[str] = None secret_access_key: Optional[str] = None role_arn: Optional[str] = None external_id: Optional[str] = None default_region: Optional[str] = None is_active: Optional[int] = None class AWSCredentialOut(AWSCredentialBase): model_config = ConfigDict(from_attributes=True) id: int created_at: datetime updated_at: datetime class CustomerCredentialBase(BaseModel): customer_id: int credential_id: int is_allowed: int = 1 class CustomerCredentialCreate(CustomerCredentialBase): pass class CustomerCredentialOut(CustomerCredentialBase): model_config = ConfigDict(from_attributes=True) id: int created_at: datetime updated_at: datetime