""" User Asset Assignment Model """ from sqlalchemy import Column, String, Boolean, DECIMAL, Text from sqlalchemy.dialects.postgresql import UUID from datetime import datetime from app.core.database import Base import uuid class UserAssetAssignment(Base): """ User Asset Assignment model - Long-term equipment assigned to users """ __tablename__ = "user_asset_assignments" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) user_id = Column(UUID(as_uuid=True), nullable=False) # Asset descriptors asset_type = Column(Text, nullable=False) # 'PPE', 'Laptop', 'Phone', 'Vehicle', 'Tools' asset_name = Column(Text, nullable=False) asset_description = Column(Text) serial_number = Column(Text) registration_number = Column(Text) # Valuation asset_value = Column(DECIMAL(12, 2)) currency = Column(Text, default='KES') # Lifecycle assigned_at = Column(String(50), default=lambda: datetime.utcnow().isoformat()) assigned_by_user_id = Column(UUID(as_uuid=True), nullable=True) expected_return_at = Column(String(50), nullable=True) returned_at = Column(String(50), nullable=True) condition_on_assign = Column(Text) condition_on_return = Column(Text) # Status is_active = Column(Boolean, default=True) notes = Column(Text) # Timestamps created_at = Column(String(50), default=lambda: datetime.utcnow().isoformat()) updated_at = Column(String(50), default=lambda: datetime.utcnow().isoformat()) deleted_at = Column(String(50), nullable=True) def __repr__(self): return f""