from pydantic import BaseModel, EmailStr, Field, validator, ConfigDict from datetime import datetime from typing import Optional, Dict, Any # import re from enum import Enum # class Action(Enum): UPLOAD = "upload" MATCH = "match" QUERY = "query" CONSUMPTION = "consumption" CREATE = "create" DELETE = "delete" SOLD = "sold" INTERACTION = "interaction" COMMENT = "comment" CONFIG = "config" EMAIL = "email" class Target(Enum): CLIENT = "client" INVOICES = "invoices" FEED = "feed" EFOS = "efos" CREDITS = "credits" USERS = "users" EMAIL = "email" class MovesBase(BaseModel): action_type: Action target_type : Target description: Optional[str] move_metadata: Optional[Dict[str, Any]] = None ip_address: Optional[str] user_agent: Optional[str] is_active: bool = True class MoveCreate(MovesBase): client_id: int user_id: int class MoveUpdate(MoveCreate): pass class MovesResponse(MoveCreate): id: int created_at: datetime created_by: Optional[int] updated_at: Optional[datetime] deleted_by: Optional[int] model_config = ConfigDict(from_attributes=True)