from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, JSON, Date, Text from sqlalchemy.orm import relationship from sqlalchemy.sql import func from sqlalchemy.dialects.postgresql import UUID as PG_UUID from app.db.base_class import Base class VehicleOwnership(Base): __tablename__ = "vehicle_ownerships" __table_args__ = {"schema": "data"} id = Column(Integer, primary_key=True, index=True) vehicle_id = Column(PG_UUID(as_uuid=True), ForeignKey("data.assets.id"), nullable=False) user_id = Column(Integer, ForeignKey("data.users.id"), nullable=False) start_date = Column(Date, nullable=False, default=func.current_date()) end_date = Column(Date, nullable=True) notes = Column(Text, nullable=True) vehicle = relationship("Asset", back_populates="ownership_history") user = relationship("User", back_populates="ownership_history") class AuditLog(Base): __tablename__ = "audit_logs" __table_args__ = {"schema": "data"} id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey("data.users.id"), nullable=True) target_type = Column(String, index=True) target_id = Column(String, index=True) action = Column(String, nullable=False) changes = Column(JSON, nullable=True) timestamp = Column(DateTime(timezone=True), server_default=func.now()) user = relationship("User")